UNPKG

transaction-logger

Version:

This is a custom logging library based on winston.

109 lines (67 loc) 4.24 kB
# 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][info][../Logger/index.js] >>> Mensaje de información [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 ) ``` ###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:** `var 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 la siguiente línea de log: **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 excpetion.log caerán todas las excepciones no manejadas (puede probar hacer un `throw Error('error')` y verá el resultado.