File

src/Logger/Logger.class.ts

Description

Logger service for ASK SDK

Constructor

constructor(requestEnvelope: RequestEnvelope, loggerConfig: ISettingsParam)

Methods

Public getInstance
getInstance(requestEnvelope: RequestEnvelope, loggerConfig: ISettingsParam)
Returns: LoggerService

Properties

Private _instance
_instance: LoggerService
Private _logger
_logger: Logger
Public logger
logger: Logger
import { Logger as TsLogger, ISettingsParam } from 'tslog';
import { RequestEnvelope } from 'ask-sdk-model';
import { isInAWSLambda, AWSLambdaEnvContext } from './Logger.utils';

/**
 * Logger service for ASK SDK
 */
export class LoggerService {
  private static _instance: LoggerService;
  private readonly _logger: TsLogger;

  public constructor(
    requestEnvelope: RequestEnvelope,
    loggerConfig?: ISettingsParam
  ) {
    this._logger = new TsLogger({
      type: isInAWSLambda() ? 'json' : 'pretty',
      ...loggerConfig,
      displayInstanceName: true,
      displayLoggerName: isInAWSLambda(),
      displayRequestId: true,
      displayTypes: true,
      name: isInAWSLambda()
        ? `${AWSLambdaEnvContext.functionName}-${AWSLambdaEnvContext.functionVersion}`
        : '',
      instanceName: requestEnvelope.request.type,
      requestId: requestEnvelope.request.requestId,
    });
  }

  public static getInstance(
    requestEnvelope?: RequestEnvelope,
    loggerConfig?: ISettingsParam
  ): LoggerService {
    if (!this._instance) {
      if (!requestEnvelope) {
        throw new Error('requestEnvelope is required for initializing');
      }
      this._instance = new LoggerService(requestEnvelope, loggerConfig);
    }
    return this._instance;
  }

  public get logger(): TsLogger {
    return this._logger;
  }
}

results matching ""

    No results matching ""