inmo-logger
v5.0.3
Published
This is a custom logging library based on winston.
Downloads
14
Readme
InmoLogger for NodeJS
Orlinski-Zawrzykraj
Introduccion
Ésta es una librería personalizada de logging basada en winston.
Es una librería minimal, toma solo algunas de las funcionalidades que presenta winston, y permite realizar un guardado de log tanto en consola, en un archivo de texto a la vez como tambien publicar en un servidor de syslog. Con el siguiente formato de ejemplo:
[fecha][numero de proceso][nivel del log][archivo que generó el log][tiempo en milisegundos (opcional)] >>> mensaje
Ejemplos
[2020-06-07 12:53:22][30284][debug][../Logger/index.js][5ms] >>> Mensaje debug
[2020-06-07 12:53:22][30284][warn][../Logger/index.js][0ms] >>> Mensaje de alerta
[2020-06-07 12:53:22][30284][error][../Logger/index.js] >>> Mensaje de error
Configuracion
Se puede configurar para que en el ambiente local guarde los logs en dos archivos: exception.log y server.log Basicamente en el env debe colocar estas variables de entorno, e indicar en el enviroment que está en un ambiente local:
Si el LOG_ENVIRONMENT
es local
, crea una carpeta para los logs en un archivo, y en consola
Si el LOG_ENVIRONMENT
es console
, solo genera los logs en consola.
Log levels ( error | warn | info | verbose | debug )
LOG_LEVEL= ( debug | info | warn | error | crit )
LOG_ENVIRONMENT= (local | console)
LOG_LOCAL_FOLDER= (log folder location )
LOG_LOCAL_FILE_NAME=( logs filename )
LOG_LOCAL_EXCEPTION_FILE_NAME=( exceptions filename )
Ejemplo
LOG_LEVEL=debug
LOG_ENVIRONMENT=local
LOG_LOCAL_FOLDER=../logs/
LOG_LOCAL_FILE_NAME=file.log
LOG_LOCAL_EXCEPTION_FILE_NAME=error.log
SERVICE_NAME=chassis
Uso
Para importarla debe hacer lo siguiente:
En la constola correr el comando:
npm install inmo-logger
Luego, importar:
import Logger from 'inmo-logger'
Luego debe crear una instancia, en cada archivo donde necesite loggear. Puede hacerlo indicando o no la ruta destino del log:
const logger = new Logger(__filename)
Obs: en el primer argumento, debe siempre agregar __filename, que es la url global del script (archivo) donde estamos creando la librería. Esto nos permite loguear indicando el nombre del archivo que se encuentra logueando.
**Estos son los tipos de mensaje que puede loggear, con niveles INFO, DEBUG, WARN y ERROR:**
logger.info('Mensaje info sin calculo de tiempo')
logger.warn('Mensaje warn sin calculo de tiempo')
logger.error('Mensaje error sin calculo de tiempo')
logger.debug('Mensaje debug sin calculo de tiempo')
También puede agregar un tiempo de inicio, y el logger calculará el tiempo final, y la diferencia en milisegundos:
const initTime = new Date().getTime()
logger.warn('Mensaje warn sin calculo de tiempo',initTime)
logger.error('Mensaje error sin calculo de tiempo',initTime)
logger.debug('Mensaje debug sin calculo de tiempo',initTime)
Por último también podrá agregar un tiempo final, y el logger calculará la diferencia en milisegundos:
const endTime = new Date().getTime()
logger.info('Mensaje info sin calculo de tiempo',initTime,endTime)
logger.warn('Mensaje warn sin calculo de tiempo',initTime,endTime)
logger.error('Mensaje error sin calculo de tiempo',initTime,endTime)
logger.debug('Mensaje debug sin calculo de tiempo',initTime,endTime)
Agregación de guid opcional
Si lo desea pueda agregar un guid al final de cada logueo (siempre como último parámetro):
logger.info("Bug created", initTime, guid)
Y esto generaría por ejemplo la siguiente línea de log:
2024-06-03 20:48:18][debug][Chassis][../controllers/ping-controller.ts][175ms][id:ac226b2e-90e2-453c-bb96-21c902257833] >>> Bug Created
** Lectura del log y excepciones no capturadas**
Como indicamos anteriormente, el log se guarda por defecto en la carpeta ./log.
En la misma se guardarán dos archivos: server.log y exception.log.
En el primer archivo accederá al log completo, el cual puede leer en caliente con el comando:
tail -f server.log
Este comando deberá ejecutarse parado en la misma carpeta donde se encuentra el log. Le permitirá ver los cambios del log a medida que se vayan sucediendo, sin tener que refrescar ni volver a ejecutar el comando.
Por otro lado, en el archivo exception.log caerán todas las excepciones no manejadas (puede probar hacer un throw Error('error')
y verá el resultado.