Skip to content

luc-mo/logger

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

@snowdrive/logger

Utilidad para automatizar el registro de logs mediante decoradores. Inyecta identificadores de trazabilidad, extrae parámetros y mide tiempos de ejecución de las funciones automáticamente.

npm latest package

Tabla de Contenidos

Instalación

npm install @snowdrive/logger
yarn add @snowdrive/logger
pnpm add @snowdrive/logger

Uso

Configuración Inicial

Configura la instancia de tu logger y establece un nivel de log mínimo base opcional para toda la aplicación. La configuración por defecto utiliza los metodos de console y nivel de log de INFO.

import { Logger } from '@snowdrive/logger';
import { createLogger, format, transports } from 'winston'
const { combine, timestamp, printf } = format

export const winstonLogger = createLogger({
	level: 'trace',
	levels: {
		fatal: 0,
		error: 1,
		warn: 2,
		info: 3,
		debug: 4,
		trace: 5,
	},
	transports: [new transports.Console()],
	format: combine(
		timestamp(),
		printf(({ timestamp, level, message }) => {
			return `[${timestamp}] [${level.toUpperCase()}] ${message}`
		})
	),
})

Logger.config({ level: 'TRACE', logger: winstonLogger });

Decorando clases y métodos

Aplica el decorador @Logger para registrar automáticamente inicio (STARTED), éxito (COMPLETED) o fallo (FAILED) en tus métodos, junto con su tiempo de duración.

import { Logger } from '@snowdrive/logger';

@Logger({ severity: 'INFO' })
class TestClass {
  @Logger({ severity: 'DEBUG', params: ['key', 'value'] })
  public myMethod(data: any) {}

  public myOtherMethod() {}
}

Trazabilidad con contexto

Implementa Logger.context utilizando un identificador unico para englobar toda la ejecución de los métodos de esa ejecución bajo el mismo traceId.

import { Logger } from '@snowdrive/logger';
import crypto from 'node:crypto';
import express from 'express';

const app = express();

app.use((req, res, next) => {
  const traceId = req.headers['x-trace-id'] ?? crypto.randomUUID()
  Logger.context.run(traceId, () => {
    res.setHeader('x-trace-id', traceId);
    next();
  });
});

About

Decorador de TypeScript para automatizar logs y trazar ejecución en métodos y clases.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors