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) 1.44 kB
import{AsyncLocalStorage as D}from"async_hooks";var i=new D;function k(s,e){i.run({traceId:s},e)}var C="x-trace-id",M="nestjs-logitron";var t=class t{static getTraceIdField(){return t.traceIdField}static setTraceIdField(e){t.traceIdField=e}static getTraceId(){return i.getStore()?.traceId??null}};t.traceIdField=C;var h=t;import E from"fs";import b from"readline";async function Q(s){let{logFilePath:e,page:F,limit:m,logRegex:O=/^\[(.*?)\] \[(.*?)\] \[(.*?)\] \[(.*?)\] \[(.*?)\] \[(.*?)\] \[(.*?)\] \[(.*?)\]$/,level:p,traceId:l,appName:d,message:f,execution:u,searchPayload:y}=s;if(!E.existsSync(e))throw new Error("File not found");let R=E.createReadStream(e,"utf-8"),T=b.createInterface({input:R,crlfDelay:1/0}),x=[],o=0,L=(F-1)*m,v=L+m;for await(let c of T){let r=c.match(O);if(!r)continue;let[,$,I,w,a,P,n,g]=r,A=I?I.toLowerCase():"unknown",N=n&&n!=="N/A"?JSON.parse(n):"",S=g&&g!=="N/A"?g:"";p&&A!==p.toLowerCase()||l&&a!==l||d&&w?.toLowerCase()!==d.toLowerCase()||f&&!P?.toLowerCase().includes(f.toLowerCase())||u&&S!==u||y&&n!=="N/A"&&!JSON.stringify(N).toLowerCase().includes(y.toLowerCase())||(o>=L&&o<v&&x.push({id:a&&a.length>0?a:"N/A",timestamp:$,level:A,appName:w,message:P,payload:N,execution:S}),o++)}return{total:o,data:x.sort((c,r)=>new Date(r.timestamp).getTime()-new Date(c.timestamp).getTime())}}var Y=M;export{Y as PARAMS_PROVIDER_TOKEN,h as TraceIdHandler,i as asyncLocalStorage,Q as parseLogFile,k as withTraceId};