nodejs-logsage
Version:
Powerful logger module for NestJS, seamlessly integrating Pino and Winston for flexible logging with easy configuration.
2 lines (1 loc) • 3.35 kB
JavaScript
;var A=Object.create;var I=Object.defineProperty;var G=Object.getOwnPropertyDescriptor;var S=Object.getOwnPropertyNames;var W=Object.getPrototypeOf,F=Object.prototype.hasOwnProperty;var $=(o,e)=>{for(var t in e)I(o,t,{get:e[t],enumerable:!0})},M=(o,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of S(e))!F.call(o,s)&&s!==t&&I(o,s,{get:()=>e[s],enumerable:!(i=G(e,s))||i.enumerable});return o};var K=(o,e,t)=>(t=o!=null?A(W(o)):{},M(e||!o||!o.__esModule?I(t,"default",{value:o,enumerable:!0}):t,o)),q=o=>M(I({},"__esModule",{value:!0}),o);var k={};$(k,{LoggerService:()=>y});module.exports=q(k);var w="x-trace-id",u="logsage",T="EXECUTION_LOG_START_TIME",h="LOGGER_OPTIONS",N="EXECUTION_LOG_CALLER";var d=class d{static getTraceIdField(){return d.traceId}static setTraceId(e){d.traceId=e}};d.traceId=w;var a=d;function U(...o){let e=a.getTraceIdField(),t=null,i=[],s=null,m=null;for(let r of o.filter(x=>x))r&&typeof r=="object"&&(e in r&&(t=r[e]),T in r&&(s=new Date().getTime()-(typeof r[T]=="number"?r[T]:0)),N in r&&(m=r[N])),Object?.keys(r)?.length&&i.push(r);let p=i.filter(r=>r).map(r=>typeof r=="object"?JSON.stringify(r):r).join(" ");return s!==null&&(p=`[${m?m+": ":""}${s} ms]:${p}`),t&&(p=`[${t}]:${p}`),p}var n=U;var b=K(require("pino")),C=require("date-fns");var L=class{constructor(e){this.logger=(0,b.default)({transport:{target:"pino-pretty"},base:{pid:!1},timestamp:()=>`,"time":"${(0,C.format)(new Date,"yyyy-MM-dd'T'HH:mm:ss")}"`,...e})}info(...e){let t=n(...e);this.logger.info(t)}warn(...e){let t=n(...e);this.logger.warn(t)}error(...e){let t=n(...e);this.logger.error(t)}debug(...e){let t=n(...e);this.logger.debug(t)}};var g=require("winston");var{combine:X,timestamp:j,printf:Y,colorize:H}=g.format,O=class{constructor(e){this.logger=(0,g.createLogger)({transports:[new g.transports.Console],format:X(H({all:!0}),j({format:"YYYY-MM-DDThh:mm:ss"}),Y(t=>`[${t.timestamp}] ${t.level}: ${t.message}`)),...e})}info(...e){let t=n(...e);this.logger.info(t)}warn(...e){let t=n(...e);this.logger.warn(t)}error(...e){let t=n(...e);this.logger.error(t)}debug(...e){let t=n(...e);this.logger.debug(t)}};function D({type:o,options:e}){switch(o){case"pino":return new L(e);case"winston":return new O(e);default:throw new Error("Invalid logger type")}}var P=require("uuid"),f=require("cls-hooked");var c=class c{use(e,t,i){let s=a.getTraceIdField(),m=e?.headers?.[s]??e?.body?.[s]??e?.query?.[s]??(0,P.v4)();c.clsNamespace.run(()=>{e.headers[s]=m;let R=e.headers[s];c.clsNamespace.set(s,R),i()})}static getTraceId(){let e=a.getTraceIdField(),t=(0,f.getNamespace)(u);return t?t.get(e):""}};c.clsNamespace=(0,f.getNamespace)(u)??(0,f.createNamespace)(u);var l=c;var v=class{constructor(){this.db=new Map}get(e){return this.db.get(e)}set(e,t,i=0){this.db.set(e,t),i!==0&&setTimeout(()=>{this.del(e)},i*1e3)}del(e){this.db.delete(e)}},B=new v,E=B;var y=class{constructor(e={type:"pino"}){this.logger=D(e),E.set(h,e)}info(...e){this.logWithRequestId("info",...e)}warn(...e){this.logWithRequestId("warn",...e)}error(...e){this.logWithRequestId("error",...e)}debug(...e){this.logWithRequestId("debug",...e)}addRequestId(...e){let t=a.getTraceIdField(),i=l.getTraceId();return i?e.concat({[t]:i}):e}logWithRequestId(e,...t){let i=this.addRequestId(...t);this.logger[e](...i)}};0&&(module.exports={LoggerService});