UNPKG

nestjs-logitron

Version:

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

2 lines (1 loc) 4.58 kB
var b=Object.defineProperty;var O=Object.getOwnPropertyDescriptor;var c=(i,e,t,r)=>{for(var o=r>1?void 0:r?O(e,t):e,a=i.length-1,g;a>=0;a--)(g=i[a])&&(o=(r?g(e,t,o):g(o))||o);return r&&o&&b(e,t,o),o},L=(i,e)=>(t,r)=>e(t,r,i);import{Global as U,Inject as Y,Module as J,RequestMethod as V}from"@nestjs/common";var P="x-trace-id",m="nestjs-logitron";var d=m;import A from"pino";import{AsyncLocalStorage as W}from"async_hooks";var f=new W;function N(i,e){f.run({traceId:i},e)}function M(i,e,t,r,...o){let a=new Date().toISOString(),g=f.getStore()?.traceId??"N/A",I=o.find(v=>v&&typeof v=="object")??null,T=r?.name??"N/A",E=typeof r?.time=="number"?`${r.time} ms`:"N/A";return`[${a}] [${i.toUpperCase()}] [${e.toUpperCase()}] [${g}] [${t}] [${I?JSON.stringify(I):"N/A"}] [${T}] [${E}]`}var n=M;var h=class{constructor(e){this.appName=m;this.logger=A({transport:{target:"pino-pretty",options:{ignore:"level"}},base:null,timestamp:!1,...e}),this.appName=e?.appName??m}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=n("info",this.appName,e,void 0,...t);this.logger.info(r)}warn(e,...t){let r=n("warn",this.appName,e,void 0,...t);this.logger.warn(r)}error(e,...t){let r=n("error",this.appName,e,void 0,...t);this.logger.error(r)}debug(e,...t){let r=n("debug",this.appName,e,void 0,...t);this.logger.debug(r)}logWithExecutionTime(e,t,r,...o){let a=(performance.now()-r.start).toFixed(2),g=n(e,this.appName,t,{name:r?.name,time:Number(a)},...o);this.logger[e](g)}};import{createLogger as R,transports as F,format as S}from"winston";var{combine:C,timestamp:D,printf:j,colorize:$}=S,x=class{constructor(e){this.appName=m;this.logger=R({transports:[new F.Console],format:C($({all:!0}),D({format:"YYYY-MM-DDThh:mm:ss"}),j(t=>`[${t.timestamp}] ${t.level}: ${t.message}`)),...e}),this.appName=e?.appName??m}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=n("info",this.appName,e,void 0,...t);this.logger.info(r)}warn(e,...t){let r=n("warn",this.appName,e,void 0,...t);this.logger.warn(r)}error(e,...t){let r=n("error",this.appName,e,void 0,...t);this.logger.error(r)}debug(e,...t){let r=n("debug",this.appName,e,void 0,...t);this.logger.debug(r)}logWithExecutionTime(e,t,r,...o){let a=(performance.now()-r.start).toFixed(2),g=n(e,this.appName,t,{name:r?.name,time:Number(a)},...o);this.logger[e](g)}};import{Injectable as _}from"@nestjs/common";function w({type:i,options:e}){switch(i){case"pino":return new h(e);case"winston":return new x(e);default:throw new Error("Invalid logger type")}}var s=class{constructor(e){this.logger=w(e)}log(e,...t){this.logger.info(e,...t)}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)}};s=c([_()],s);import{Injectable as k}from"@nestjs/common";var y=class y{static getTraceIdField(){return y.traceIdField}static setTraceIdField(e){y.traceIdField=e}static getTraceId(){return f.getStore()?.traceId??null}};y.traceIdField=P;var u=y;var l=class{use(e,t,r){let o=e?.headers?.[u.getTraceIdField()]??e?.body?.[u.getTraceIdField()]??e?.query?.[u.getTraceIdField()];N(o,()=>r())}};l=c([k()],l);var q=[{path:"*",method:V.ALL}],p=class{constructor(e){this.params=e}static forRoot(e){return{module:p,providers:[{provide:d,useValue:e??{}},{provide:s,useFactory:r=>new s(r),inject:[d]}],exports:[s]}}static forRootAsync(e){let r=[{provide:d,useFactory:e.useFactory,inject:e.inject},{provide:s,useFactory:async o=>new s(await o),inject:[d]},...e.providers||[]];return{module:p,imports:e.imports,providers:r,exports:[s]}}configure(e){let{forRoutes:t=q,exclude:r}=this.params,o=[l];r?e.apply(...o).exclude(...r).forRoutes(...t):e.apply(...o).forRoutes(...t)}};p=c([U(),J({}),L(0,Y(d))],p);export{p as LoggerModule};