UNPKG

@loglayer/transport

Version:

Base transport used to implement logging transports for loglayer.

207 lines (203 loc) 5.88 kB
// src/BaseTransport.ts import { LogLevel } from "@loglayer/shared"; var BaseTransport = class { /** * An identifier for the transport. If not defined, a random one will be generated. */ id; /** * Instance of the logger library */ logger; /** * If false, the transport will not send logs to the logger. */ enabled; /** * If true, the transport will log to the console for debugging purposes */ consoleDebug; constructor(config) { this.id = config.id ?? (/* @__PURE__ */ new Date()).getTime().toString() + Math.random().toString(); this.logger = config.logger; this.enabled = config.enabled ?? true; this.consoleDebug = config.consoleDebug ?? false; } /** * LogLayer calls this to send logs to the transport */ _sendToLogger(params) { if (!this.enabled) { return; } const messages = this.shipToLogger(params); if (this.consoleDebug) { switch (params.logLevel) { case LogLevel.info: console.info(...messages); break; case LogLevel.warn: console.warn(...messages); break; case LogLevel.error: console.error(...messages); break; case LogLevel.trace: console.debug(...messages); break; case LogLevel.debug: console.debug(...messages); break; case LogLevel.fatal: console.debug(...messages); break; default: console.log(...messages); } } } /** * Returns the logger instance attached to the transport */ getLoggerInstance() { return this.logger; } }; // src/types.ts import { LogLevel as LogLevel2 } from "@loglayer/shared"; var LogLevelPriority = { [LogLevel2.trace]: 0, [LogLevel2.debug]: 1, [LogLevel2.info]: 2, [LogLevel2.warn]: 3, [LogLevel2.error]: 4, [LogLevel2.fatal]: 5 }; // src/index.ts import { LogLevel as LogLevel4 } from "@loglayer/shared"; // src/test-utils.ts function testTransportOutput(label, logLayerInstance) { console.log(` ===== Start Livetest for: ${label} =====`); console.log("\n===== info() ===="); logLayerInstance.info("info message"); console.log("\n===== warn() ===="); logLayerInstance.warn("warn message"); console.log("\n===== error() ===="); logLayerInstance.error("error message"); console.log("\n===== debug() ===="); logLayerInstance.debug("debug message"); console.log("\n===== trace() ===="); logLayerInstance.trace("trace message"); console.log("\n===== fatal() ===="); logLayerInstance.fatal("fatal message"); console.log("\n===== multiple parameters ===="); logLayerInstance.info("multiple info message", "with multiple", "parameters"); console.log("\n===== multiple parameters with mixed data ===="); logLayerInstance.info("mixed data", 1234, void 0, null, true); console.log("\n===== withMetadata() ===="); logLayerInstance.withMetadata({ test: "metadata", test2: "metadata2" }).trace("trace message with metadata"); console.log("\n===== withError() ===="); logLayerInstance.withError(new Error("error object")).trace("trace message with error"); console.log("\n===== withError() + withMetadata() ===="); logLayerInstance.withMetadata({ test: "metadata", test2: "metadata2", nested: { data: "nested data" } }).withError(new Error("error object")).error("error message with metadata and error instance"); console.log("\n===== onlyError() ===="); logLayerInstance.errorOnly(new Error("error message")); console.log("\n===== onlyMetadata() ===="); logLayerInstance.metadataOnly({ only: "metadata", arrayData: [1, 2, 3] }); console.log("\n===== withContext() ===="); logLayerInstance.withContext({ test: "data" }); logLayerInstance.info("context data"); console.log(` ===== End Livetest for: ${label} =====`); } // src/LoggerlessTransport.ts import { LogLevel as LogLevel3 } from "@loglayer/shared"; var LoggerlessTransport = class { /** * An identifier for the transport. If not defined, a random one will be generated. */ id; /** * If false, the transport will not send logs to the logger. */ enabled; /** * Minimum log level to process. Defaults to "trace". */ level; /** * If true, the transport will log to the console for debugging purposes */ consoleDebug; constructor(config) { this.id = (/* @__PURE__ */ new Date()).getTime().toString() + Math.random().toString(); this.enabled = config.enabled ?? true; this.consoleDebug = config.consoleDebug ?? false; this.level = config.level ?? "trace"; } /** * LogLayer calls this to send logs to the transport */ _sendToLogger(params) { if (!this.enabled) { return; } if (LogLevelPriority[params.logLevel] < LogLevelPriority[this.level]) { return; } const messages = this.shipToLogger(params); if (this.consoleDebug) { switch (params.logLevel) { case LogLevel3.info: console.info(...messages); break; case LogLevel3.warn: console.warn(...messages); break; case LogLevel3.error: console.error(...messages); break; case LogLevel3.trace: console.debug(...messages); break; case LogLevel3.debug: console.debug(...messages); break; case LogLevel3.fatal: console.debug(...messages); break; default: console.log(...messages); } } } /** * Returns the logger instance attached to the transport */ getLoggerInstance() { throw new Error("This transport does not have a logger instance"); } }; export { BaseTransport, LogLevel4 as LogLevel, LogLevelPriority, LoggerlessTransport, testTransportOutput }; //# sourceMappingURL=index.js.map