UNPKG

apitally

Version:

Simple API monitoring & analytics for REST APIs built with Express, Fastify, NestJS, AdonisJS, Hono, H3, Elysia, Hapi, and Koa.

1 lines 2.12 kB
{"version":3,"sources":["../../src/loggers/console.ts"],"sourcesContent":["import { AsyncLocalStorage } from \"node:async_hooks\";\nimport { format } from \"node:util\";\n\nimport type { LogRecord } from \"../common/requestLogger.js\";\n\ntype LogLevel = \"log\" | \"warn\" | \"error\" | \"info\" | \"debug\";\n\nconst MAX_BUFFER_SIZE = 1000;\n\nlet isPatched = false;\nlet globalLogsContext: AsyncLocalStorage<LogRecord[]>;\n\nexport function patchConsole(logsContext: AsyncLocalStorage<LogRecord[]>) {\n globalLogsContext = logsContext;\n\n if (isPatched) {\n return;\n }\n\n const logMethods: LogLevel[] = [\"log\", \"warn\", \"error\", \"info\", \"debug\"];\n logMethods.forEach((method) => {\n const originalMethod = console[method];\n console[method] = function (...args: any[]) {\n captureLog(method, args);\n return originalMethod.apply(console, args);\n };\n });\n\n isPatched = true;\n}\n\nfunction captureLog(level: LogLevel, args: any[]) {\n const logs = globalLogsContext?.getStore();\n if (logs && logs.length < MAX_BUFFER_SIZE) {\n logs.push({\n timestamp: Date.now() / 1000,\n logger: \"console\",\n level,\n message: format(...args),\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AACA;;;;;uBAAuB;AAMvB,IAAMA,kBAAkB;AAExB,IAAIC,YAAY;AAChB,IAAIC;AAEG,SAASC,aAAaC,aAA2C;AACtEF,sBAAoBE;AAEpB,MAAIH,WAAW;AACb;EACF;AAEA,QAAMI,aAAyB;IAAC;IAAO;IAAQ;IAAS;IAAQ;;AAChEA,aAAWC,QAAQ,CAACC,WAAAA;AAClB,UAAMC,iBAAiBC,QAAQF,MAAAA;AAC/BE,YAAQF,MAAAA,IAAU,YAAaG,MAAW;AACxCC,iBAAWJ,QAAQG,IAAAA;AACnB,aAAOF,eAAeI,MAAMH,SAASC,IAAAA;IACvC;EACF,CAAA;AAEAT,cAAY;AACd;AAjBgBE;AAmBhB,SAASQ,WAAWE,OAAiBH,MAAW;AAC9C,QAAMI,OAAOZ,uDAAmBa;AAChC,MAAID,QAAQA,KAAKE,SAAShB,iBAAiB;AACzCc,SAAKG,KAAK;MACRC,WAAWC,KAAKC,IAAG,IAAK;MACxBC,QAAQ;MACRR;MACAS,aAASC,yBAAAA,GAAUb,IAAAA;IACrB,CAAA;EACF;AACF;AAVSC;","names":["MAX_BUFFER_SIZE","isPatched","globalLogsContext","patchConsole","logsContext","logMethods","forEach","method","originalMethod","console","args","captureLog","apply","level","logs","getStore","length","push","timestamp","Date","now","logger","message","format"]}