UNPKG

@loglayer/transport

Version:

Base transport used to implement logging transports for loglayer.

1 lines 14.9 kB
{"version":3,"sources":["/home/runner/work/loglayer/loglayer/packages/core/transport/dist/index.cjs","../src/BaseTransport.ts","../src/types.ts","../src/index.ts","../src/test-utils.ts","../src/LoggerlessTransport.ts"],"names":["LogLevel"],"mappings":"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","file":"/home/runner/work/loglayer/loglayer/packages/core/transport/dist/index.cjs","sourcesContent":[null,"import { LogLevel } from \"@loglayer/shared\";\nimport type { LogLayerTransport, LogLayerTransportConfig, LogLayerTransportParams } from \"./types.js\";\n\n/**\n * For implementing libraries that are logging libraries that generally have an interface of:\n * info(), warn(), error(), debug(), trace(), etc.\n *\n * @see {@link https://loglayer.dev/transports/creating-transports.html | Creating Transports}\n */\nexport abstract class BaseTransport<LogLibrary> implements LogLayerTransport<LogLibrary> {\n /**\n * An identifier for the transport. If not defined, a random one will be generated.\n */\n id?: string;\n\n /**\n * Instance of the logger library\n */\n protected logger: LogLibrary;\n\n /**\n * If false, the transport will not send logs to the logger.\n */\n enabled: boolean;\n\n /**\n * If true, the transport will log to the console for debugging purposes\n */\n protected consoleDebug?: boolean;\n\n constructor(config: LogLayerTransportConfig<LogLibrary>) {\n this.id = config.id ?? new Date().getTime().toString() + Math.random().toString();\n this.logger = config.logger;\n this.enabled = config.enabled ?? true;\n this.consoleDebug = config.consoleDebug ?? false;\n }\n\n /**\n * LogLayer calls this to send logs to the transport\n */\n _sendToLogger(params: LogLayerTransportParams): void {\n if (!this.enabled) {\n return;\n }\n\n const messages = this.shipToLogger(params);\n\n if (this.consoleDebug) {\n switch (params.logLevel) {\n case LogLevel.info:\n console.info(...messages);\n break;\n case LogLevel.warn:\n console.warn(...messages);\n break;\n case LogLevel.error:\n console.error(...messages);\n break;\n case LogLevel.trace:\n console.debug(...messages);\n break;\n case LogLevel.debug:\n console.debug(...messages);\n break;\n case LogLevel.fatal:\n console.debug(...messages);\n break;\n default:\n console.log(...messages);\n }\n }\n }\n\n /**\n * Returns the logger instance attached to the transport\n */\n getLoggerInstance(): LogLibrary {\n return this.logger;\n }\n\n /**\n * Sends the log data to the logger for transport\n */\n abstract shipToLogger(params: LogLayerTransportParams): any[];\n}\n","import { LogLevel } from \"@loglayer/shared\";\nexport type { LogLayerTransport, LogLayerTransportParams } from \"@loglayer/shared\";\n\nexport const LogLevelPriority: Record<LogLevel, number> = {\n [LogLevel.trace]: 0,\n [LogLevel.debug]: 1,\n [LogLevel.info]: 2,\n [LogLevel.warn]: 3,\n [LogLevel.error]: 4,\n [LogLevel.fatal]: 5,\n};\n\n/**\n * Logging methods that are common to logging libraries\n */\nexport interface LoggerLibrary {\n info(...data: any[]): void;\n warn(...data: any[]): void;\n error(...data: any[]): void;\n trace?: (...data: any[]) => void;\n debug(...data: any[]): void;\n fatal?: (...data: any[]) => void;\n}\n\nexport interface LoggerlessTransportConfig {\n /**\n * A user-defined identifier for the transport\n */\n id?: string;\n /**\n * If false, the transport will not send logs to the logger.\n * Default is true.\n */\n enabled?: boolean;\n /**\n * If true, the transport will log to the console for debugging purposes\n */\n consoleDebug?: boolean;\n /**\n * Minimum log level to process. Defaults to \"trace\".\n */\n level?: \"trace\" | \"debug\" | \"info\" | \"warn\" | \"error\" | \"fatal\";\n}\n\nexport interface LogLayerTransportConfig<LogLibrary> extends Omit<LoggerlessTransportConfig, \"level\"> {\n /**\n * The logging library instance to use for logging\n */\n logger: LogLibrary;\n}\n","export * from \"./BaseTransport.js\";\nexport * from \"./types.js\";\nexport { LogLevel } from \"@loglayer/shared\";\nexport * from \"./test-utils.js\";\nexport * from \"./LoggerlessTransport.js\";\n","/**\n * Shows what the logging library output looks like under a transport\n * @param label A name for the test\n * @param logLayerInstance The loglayer instance to use for logging\n */\nexport function testTransportOutput(label: string, logLayerInstance: any) {\n console.log(`\\n===== Start Livetest for: ${label} =====`);\n console.log(\"\\n===== info() ====\");\n logLayerInstance.info(\"info message\");\n\n console.log(\"\\n===== warn() ====\");\n logLayerInstance.warn(\"warn message\");\n\n console.log(\"\\n===== error() ====\");\n logLayerInstance.error(\"error message\");\n\n console.log(\"\\n===== debug() ====\");\n logLayerInstance.debug(\"debug message\");\n\n console.log(\"\\n===== trace() ====\");\n logLayerInstance.trace(\"trace message\");\n\n console.log(\"\\n===== fatal() ====\");\n logLayerInstance.fatal(\"fatal message\");\n\n console.log(\"\\n===== multiple parameters ====\");\n logLayerInstance.info(\"multiple info message\", \"with multiple\", \"parameters\");\n\n console.log(\"\\n===== multiple parameters with mixed data ====\");\n logLayerInstance.info(\"mixed data\", 1234, undefined, null, true);\n\n console.log(\"\\n===== withMetadata() ====\");\n logLayerInstance\n .withMetadata({\n test: \"metadata\",\n test2: \"metadata2\",\n })\n .trace(\"trace message with metadata\");\n\n console.log(\"\\n===== withError() ====\");\n logLayerInstance.withError(new Error(\"error object\")).trace(\"trace message with error\");\n\n console.log(\"\\n===== withError() + withMetadata() ====\");\n logLayerInstance\n .withMetadata({\n test: \"metadata\",\n test2: \"metadata2\",\n nested: {\n data: \"nested data\",\n },\n })\n .withError(new Error(\"error object\"))\n .error(\"error message with metadata and error instance\");\n\n console.log(\"\\n===== onlyError() ====\");\n logLayerInstance.errorOnly(new Error(\"error message\"));\n\n console.log(\"\\n===== onlyMetadata() ====\");\n logLayerInstance.metadataOnly({\n only: \"metadata\",\n arrayData: [1, 2, 3],\n });\n\n console.log(\"\\n===== withContext() ====\");\n logLayerInstance.withContext({\n test: \"data\",\n });\n\n logLayerInstance.info(\"context data\");\n\n console.log(`\\n===== End Livetest for: ${label} =====`);\n}\n","import { LogLevel } from \"@loglayer/shared\";\nimport {\n type LogLayerTransport,\n type LogLayerTransportParams,\n LogLevelPriority,\n type LoggerlessTransportConfig,\n} from \"./types.js\";\n\n/**\n * For implementing libraries that aren't logging libraries\n *\n * @see {@link https://loglayer.dev/transports/creating-transports.html | Creating Transports}\n */\nexport abstract class LoggerlessTransport implements LogLayerTransport {\n /**\n * An identifier for the transport. If not defined, a random one will be generated.\n */\n id?: string;\n\n /**\n * If false, the transport will not send logs to the logger.\n */\n enabled: boolean;\n\n /**\n * Minimum log level to process. Defaults to \"trace\".\n */\n level?: LogLevel | \"trace\" | \"debug\" | \"info\" | \"warn\" | \"error\" | \"fatal\";\n\n /**\n * If true, the transport will log to the console for debugging purposes\n */\n protected consoleDebug?: boolean;\n\n constructor(config: LoggerlessTransportConfig) {\n // loglayer still needs an id, so we generate one even if it won't really be used\n this.id = new Date().getTime().toString() + Math.random().toString();\n this.enabled = config.enabled ?? true;\n this.consoleDebug = config.consoleDebug ?? false;\n this.level = config.level ?? \"trace\";\n }\n\n /**\n * LogLayer calls this to send logs to the transport\n */\n _sendToLogger(params: LogLayerTransportParams): void {\n if (!this.enabled) {\n return;\n }\n\n // Skip if log level is lower priority than configured minimum\n if (LogLevelPriority[params.logLevel] < LogLevelPriority[this.level]) {\n return;\n }\n\n const messages = this.shipToLogger(params);\n\n if (this.consoleDebug) {\n switch (params.logLevel) {\n case LogLevel.info:\n console.info(...messages);\n break;\n case LogLevel.warn:\n console.warn(...messages);\n break;\n case LogLevel.error:\n console.error(...messages);\n break;\n case LogLevel.trace:\n console.debug(...messages);\n break;\n case LogLevel.debug:\n console.debug(...messages);\n break;\n case LogLevel.fatal:\n console.debug(...messages);\n break;\n default:\n console.log(...messages);\n }\n }\n }\n\n /**\n * Returns the logger instance attached to the transport\n */\n getLoggerInstance() {\n throw new Error(\"This transport does not have a logger instance\");\n }\n\n /**\n * Sends the log data to the logger for transport\n */\n abstract shipToLogger(params: LogLayerTransportParams): any[];\n}\n"]}