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