UNPKG

fixparser-plugin-log-console

Version:

Console / JSON Log transport for FIXParser

8 lines (7 loc) 4.13 kB
{ "version": 3, "sources": ["../../src/ConsoleLogTransport.ts"], "sourcesContent": ["import type { ILogTransporter, LogMessage } from 'fixparser-common';\n\n/**\n * Logger output format options.\n *\n * - 'console': Output log in plain text format\n * - 'json': Output log in JSON format\n * - 'jsonrpc': Output log in JSON-RPC 2.0 format\n *\n * @public\n */\nexport type ConsoleFormat = 'console' | 'json' | 'jsonrpc';\n\n/**\n * A LogTransporter implementation for logging to the console.\n * It supports text (console), JSON, and JSON-RPC 2.0 formats.\n */\nexport class ConsoleLogTransport implements ILogTransporter {\n private format: ConsoleFormat;\n private useStderr: boolean;\n\n constructor({ format = 'json', useStderr = false }: { format: ConsoleFormat; useStderr?: boolean }) {\n this.format = format;\n this.useStderr = useStderr;\n }\n\n /**\n * Configures the format for console logging (either 'console' for text, 'json', or 'jsonrpc').\n */\n configure(config: { format: 'console' | 'json' | 'jsonrpc'; useStderr?: boolean }): void {\n this.format = config.format || 'json';\n if (config.useStderr !== undefined) {\n this.useStderr = config.useStderr;\n }\n }\n\n /**\n * Sends the log message to the console in the configured format.\n */\n async send(log: LogMessage): Promise<void> {\n const logMethod = this.useStderr ? console.error : console.log;\n\n if (this.format === 'json') {\n logMethod(JSON.stringify(log));\n } else if (this.format === 'jsonrpc') {\n const { message, ...rest } = log;\n const jsonrpcMessage = {\n jsonrpc: '2.0',\n method: log.level,\n params: {\n message,\n ...rest,\n },\n };\n logMethod(JSON.stringify(jsonrpcMessage));\n } else {\n const { name, id, message, level, ...additionalProperties } = log;\n const kv = Object.entries(additionalProperties).map(([key, value]) => `${key}: ${value}`);\n let logMessage = '';\n if (name) {\n logMessage += `${name} `;\n }\n logMessage += `${id}: ${message}`;\n void kv;\n void level;\n logMethod(logMessage, kv.join(', '));\n }\n }\n\n /**\n * Flushes the log buffer (if any buffering mechanism exists).\n */\n async flush(): Promise<void> {\n // No flushing needed for console transport\n }\n\n /**\n * Closes the transport (not needed for console, but keeping the method for consistency).\n */\n async close(): Promise<void> {\n // No close logic needed for console transport\n }\n\n /**\n * Returns the status of the transport (always \"connected\" for console).\n */\n status(): string {\n return 'connected';\n }\n}\n"], "mappings": ";AAiBO,IAAM,sBAAN,MAAqD;AAAA,EAChD;AAAA,EACA;AAAA,EAER,YAAY,EAAE,SAAS,QAAQ,YAAY,MAAM,GAAmD;AAChG,SAAK,SAAS;AACd,SAAK,YAAY;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA,EAKA,UAAU,QAA+E;AACrF,SAAK,SAAS,OAAO,UAAU;AAC/B,QAAI,OAAO,cAAc,QAAW;AAChC,WAAK,YAAY,OAAO;AAAA,IAC5B;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,KAAK,KAAgC;AACvC,UAAM,YAAY,KAAK,YAAY,QAAQ,QAAQ,QAAQ;AAE3D,QAAI,KAAK,WAAW,QAAQ;AACxB,gBAAU,KAAK,UAAU,GAAG,CAAC;AAAA,IACjC,WAAW,KAAK,WAAW,WAAW;AAClC,YAAM,EAAE,SAAS,GAAG,KAAK,IAAI;AAC7B,YAAM,iBAAiB;AAAA,QACnB,SAAS;AAAA,QACT,QAAQ,IAAI;AAAA,QACZ,QAAQ;AAAA,UACJ;AAAA,UACA,GAAG;AAAA,QACP;AAAA,MACJ;AACA,gBAAU,KAAK,UAAU,cAAc,CAAC;AAAA,IAC5C,OAAO;AACH,YAAM,EAAE,MAAM,IAAI,SAAS,OAAO,GAAG,qBAAqB,IAAI;AAC9D,YAAM,KAAK,OAAO,QAAQ,oBAAoB,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,GAAG,GAAG,KAAK,KAAK,EAAE;AACxF,UAAI,aAAa;AACjB,UAAI,MAAM;AACN,sBAAc,GAAG,IAAI;AAAA,MACzB;AACA,oBAAc,GAAG,EAAE,KAAK,OAAO;AAC/B,WAAK;AACL,WAAK;AACL,gBAAU,YAAY,GAAG,KAAK,IAAI,CAAC;AAAA,IACvC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,QAAuB;AAAA,EAE7B;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,QAAuB;AAAA,EAE7B;AAAA;AAAA;AAAA;AAAA,EAKA,SAAiB;AACb,WAAO;AAAA,EACX;AACJ;", "names": [] }