Es una librería para gestionar los logs de aws (aws-lambda).
npm i nx-logger-aws
La librería usa el patron singleton, por ende existe una solo instancia, puede estar inicializada en algún servicio o utils (es solo una recomendación).
…
// CommonJS
const { Logger } = require('nx-logger-aws');
…
ó
…
// ESM
import { Logger } 'nx-logger-aws';
…
…
const logger = Logger.getInstance({
owner: '', // *string
region: ', // *string
service: '', // *string
urlClient: '', // *string
});
…
En el archivo de la Lambda Function, se va a setear el contexto, existen 2 tipos de contexto:
- setContextLogger: es para eventos HTTP de tipo APIGatewayProxyEvent.
- setContextSQS: se usa para eventos SQS de SQSEvent.
NOTA: types de aws usados para la librería. (para Typescript)
…
// Lambda Function Contexto HTTP
exports.Handler = async (event: APIGatewayProxyEvent, context: Context) => {
logger.setContextLogger(event, context);
}
…
…
// Lambda Function Contexto SQS
exports.Handler = async (event: SQSEvent, context: Context) => {
logger.setContextSQS(event, context);
}
…
La librería disponibiliza 2 métodos para loggear info - errorlog.
Listado de enums para documentar los logs correctamente están disponibles en la librería:
enum LOG_TYPES {
DYNAMODB_REQ = 'dynamo_call',
DYNAMODB_RES = 'dynamo_response',
HTTP_REQUEST = 'http_request',
SNS_RESPONSE = 'sns_response',
SQS_RESPONSE = 'sqs_response',
SQS_REQUEST = 'sqs_call',
LAMBDA_REQ = 'lambda_call',
}
enum LOG_TAGS {
DYNAMODB_REQ_TAG = '[DYNAMODB_REQUEST]',
DYNAMODB_RES_TAG = '[DYNAMODB_RESPONSE]',
DYNAMODB_ERROR_TAG = '[DYNAMODB_ERROR]',
HTTP_SUCCESS_TAG = '[SUCCESS_RESPONSE]',
HTTP_ERROR_TAG = '[CATCH_ERROR]',
SNS_RES_TAG = '[SNS_RESPONSE]',
SNS_ERROR_TAG = '[SNS_ERROR]',
SQS_RES_TAG = '[SQS_RESPONSE]',
SQS_REQ_TAG = '[SQS_REQUEST]',
SQS_ERROR_TAG = '[SQS_ERROR]',
LAMBDA_REQ_TAG = '[LAMBDA_REQUEST]',
}
…
// Log Info
logger.info({
msg: LOG_TAGS.HTTP_SUCCESS_TAG, // *string
type: LOG_TYPES.HTTP_REQUEST, // *LOG_TYPES
request: {}, // object
response: {}, // object
});
…
…
// Log Error
logger.errorlog({
statusCode: 500, // number
error: '', // *string | object
msg: '', // *string
type: LOG_TYPES.HTTP_REQUEST, // *LOG_TYPES
});
…