UNPKG

nodejs-logitron

Version:

Powerful logger module for Nodejs/ Nestjs, seamlessly integrating Pino and Winston for flexible logging with easy configuration.

2 lines (1 loc) 3.2 kB
import L from"pino";import{AsyncLocalStorage as y}from"async_hooks";var c=new y;function x(i,e,t,r,...s){let a=new Date().toISOString(),g=c.getStore()?.traceId??"N/A",d=s.find(u=>u&&typeof u=="object")??null,h=r?.name&&typeof r?.time=="number"?`${r.name} ${r.time} ms`:"N/A";return`[${a}] [${i.toUpperCase()}] [${e.toUpperCase()}] [${g}] [${t}] [${d?JSON.stringify(d):"N/A"}] [${h}]`}var o=x;var n="nodejs-logitron";var m=class{constructor(e){this.appName=n;this.logger=L({transport:{target:"pino-pretty",options:{ignore:"level"}},base:null,timestamp:!1,...e}),this.appName=e?.appName??n}infoWithExecutionTime(e,t,...r){this.logWithExecutionTime("info",e,t,...r)}warnWithExecutionTime(e,t,...r){this.logWithExecutionTime("warn",e,t,...r)}errorWithExecutionTime(e,t,...r){this.logWithExecutionTime("error",e,t,...r)}debugWithExecutionTime(e,t,...r){this.logWithExecutionTime("debug",e,t,...r)}info(e,...t){let r=o("info",this.appName,e,void 0,...t);this.logger.info(r)}warn(e,...t){let r=o("warn",this.appName,e,void 0,...t);this.logger.warn(r)}error(e,...t){let r=o("error",this.appName,e,void 0,...t);this.logger.error(r)}debug(e,...t){let r=o("debug",this.appName,e,void 0,...t);this.logger.debug(r)}logWithExecutionTime(e,t,r,...s){let a=(performance.now()-r.start).toFixed(2),g=o(e,this.appName,t,{name:r?.name,time:Number(a)},...s);this.logger[e](g)}};import{createLogger as E,transports as T,format as I}from"winston";var{combine:v,timestamp:O,printf:b,colorize:N}=I,p=class{constructor(e){this.appName=n;this.logger=E({transports:[new T.Console],format:v(N({all:!0}),O({format:"YYYY-MM-DDThh:mm:ss"}),b(t=>`[${t.timestamp}] ${t.level}: ${t.message}`)),...e}),this.appName=e?.appName??n}infoWithExecutionTime(e,t,...r){this.logWithExecutionTime("info",e,t,...r)}warnWithExecutionTime(e,t,...r){this.logWithExecutionTime("warn",e,t,...r)}errorWithExecutionTime(e,t,...r){this.logWithExecutionTime("error",e,t,...r)}debugWithExecutionTime(e,t,...r){this.logWithExecutionTime("debug",e,t,...r)}info(e,...t){let r=o("info",this.appName,e,void 0,...t);this.logger.info(r)}warn(e,...t){let r=o("warn",this.appName,e,void 0,...t);this.logger.warn(r)}error(e,...t){let r=o("error",this.appName,e,void 0,...t);this.logger.error(r)}debug(e,...t){let r=o("debug",this.appName,e,void 0,...t);this.logger.debug(r)}logWithExecutionTime(e,t,r,...s){let a=(performance.now()-r.start).toFixed(2),g=o(e,this.appName,t,{name:r?.name,time:Number(a)},...s);this.logger[e](g)}};function f({type:i,options:e}){switch(i){case"pino":return new m(e);case"winston":return new p(e);default:throw new Error("Invalid logger type")}}var l=class{constructor(e={type:"pino"}){this.logger=f(e)}info(e,...t){this.logger.info(e,...t)}warn(e,...t){this.logger.warn(e,...t)}error(e,...t){this.logger.error(e,...t)}debug(e,...t){this.logger.debug(e,...t)}infoWithExecutionTime(e,t,...r){this.logger.infoWithExecutionTime(e,t,...r)}warnWithExecutionTime(e,t,...r){this.logger.warnWithExecutionTime(e,t,...r)}errorWithExecutionTime(e,t,...r){this.logger.errorWithExecutionTime(e,t,...r)}debugWithExecutionTime(e,t,...r){this.logger.debugWithExecutionTime(e,t,...r)}};export{l as LoggerService,m as PinoService,p as WinstonService};