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.6 kB
"use strict";var q=Object.create;var y=Object.defineProperty;var z=Object.getOwnPropertyDescriptor;var B=Object.getOwnPropertyNames;var K=Object.getPrototypeOf,Q=Object.prototype.hasOwnProperty;var V=(t,e)=>{for(var o in e)y(t,o,{get:e[o],enumerable:!0})},_=(t,e,o,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of B(e))!Q.call(t,r)&&r!==o&&y(t,r,{get:()=>e[r],enumerable:!(a=z(e,r))||a.enumerable});return t};var E=(t,e,o)=>(o=t!=null?q(K(t)):{},_(e||!t||!t.__esModule?y(o,"default",{value:t,enumerable:!0}):o,t)),W=t=>_(y({},"__esModule",{value:!0}),t);var H={};V(H,{startServer:()=>Z});module.exports=W(H);var j=E(require("express")),X=E(require("cors"));var $=require("async_hooks"),w=new $.AsyncLocalStorage;var G="x-trace-id";var i=class i{static getTraceIdField(){return i.traceIdField}static setTraceIdField(e){i.traceIdField=e}static getTraceId(){return w.getStore()?.traceId??null}};i.traceIdField=G;var b=i;var T=E(require("fs")),D=E(require("readline"));async function U(t){let{logFilePath:e,page:o,limit:a,logRegex:r,level:c,traceId:g,appName:l,message:p,execution:m,searchPayload:d}=t;if(!T.default.existsSync(e))throw new Error("File not found");let N=T.default.createReadStream(e,"utf-8"),f=D.default.createInterface({input:N,crlfDelay:1/0}),n=[],s=0,u=(o-1)*a,J=u+a;for await(let O of f){let L=O.match(r);if(!L)continue;let[,k,C,A,I,P,x,S]=L,R=C?C.toLowerCase():"unknown",v=x&&x!=="N/A"?JSON.parse(x):"",F=S&&S!=="N/A"?S:"";c&&R!==c.toLowerCase()||g&&I!==g||l&&A?.toLowerCase()!==l.toLowerCase()||p&&!P?.toLowerCase().includes(p.toLowerCase())||m&&F!==m||d&&x!=="N/A"&&!JSON.stringify(v).toLowerCase().includes(d.toLowerCase())||(s>=u&&s<J&&n.push({id:I&&I.length>0?I:"N/A",timestamp:k,level:R,appName:A,message:P,payload:v,execution:F}),s++)}return{total:s,data:n.sort((O,L)=>new Date(L.timestamp).getTime()-new Date(O.timestamp).getTime())}}var h=(0,j.default)(),M=1338,Y=/^\[(.*?)\] \[(.*?)\] \[(.*?)\] \[(.*?)\] \[(.*?)\] \[(.*?)\] \[(.*?)\]$/,Z=({logFilePath:t,corsOptions:e})=>{h.use((0,X.default)(e)),h.get("/api/logs",async(o,a)=>{try{let{page:r="1",limit:c="10",level:g,traceId:l,appName:p,message:m,execution:d,searchPayload:N}=o.query,f=parseInt(r,10),n=parseInt(c,10),{total:s,data:u}=await U({logFilePath:t,logRegex:Y,page:f,limit:n,level:g,traceId:l,appName:p,message:m,execution:d,searchPayload:N});a.json({total:s,page:f,limit:n,data:u})}catch(r){console.error("Error fetching logs:",r),a.status(500).json({error:"Failed to fetch logs"})}}),h.listen(M,()=>{console.log(`Server running at http://localhost:${M}`)})};0&&(module.exports={startServer});