UNPKG

nodejs-logsage

Version:

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

2 lines (1 loc) 1.66 kB
import T from"pino";import{format as y}from"date-fns";var L="x-trace-id";var a="EXECUTION_LOG_START_TIME";var c="EXECUTION_LOG_CALLER";var s=class s{static getTraceIdField(){return s.traceId}static setTraceId(o){s.traceId=o}};s.traceId=L;var g=s;function d(...i){let o=g.getTraceIdField(),t=null,I=[],f=null,l=null;for(let e of i.filter(O=>O))e&&typeof e=="object"&&(o in e&&(t=e[o]),a in e&&(f=new Date().getTime()-(typeof e[a]=="number"?e[a]:0)),c in e&&(l=e[c])),Object?.keys(e)?.length&&I.push(e);let n=I.filter(e=>e).map(e=>typeof e=="object"?JSON.stringify(e):e).join(" ");return f!==null&&(n=`[${l?l+": ":""}${f} ms]:${n}`),t&&(n=`[${t}]:${n}`),n}var r=d;var p=class{constructor(o){this.logger=T({transport:{target:"pino-pretty"},base:{pid:!1},timestamp:()=>`,"time":"${y(new Date,"yyyy-MM-dd'T'HH:mm:ss")}"`,...o})}info(...o){let t=r(...o);this.logger.info(t)}warn(...o){let t=r(...o);this.logger.warn(t)}error(...o){let t=r(...o);this.logger.error(t)}debug(...o){let t=r(...o);this.logger.debug(t)}};import{createLogger as u,transports as E,format as M}from"winston";var{combine:N,timestamp:v,printf:_,colorize:h}=M,m=class{constructor(o){this.logger=u({transports:[new E.Console],format:N(h({all:!0}),v({format:"YYYY-MM-DDThh:mm:ss"}),_(t=>`[${t.timestamp}] ${t.level}: ${t.message}`)),...o})}info(...o){let t=r(...o);this.logger.info(t)}warn(...o){let t=r(...o);this.logger.warn(t)}error(...o){let t=r(...o);this.logger.error(t)}debug(...o){let t=r(...o);this.logger.debug(t)}};function B({type:i,options:o}){switch(i){case"pino":return new p(o);case"winston":return new m(o);default:throw new Error("Invalid logger type")}}export{B as getLogger};