UNPKG

@tsed/logger

Version:
60 lines 1.73 kB
import { Layouts } from "../../layouts/class/Layouts.js"; /** * ## BaseAppender * * `@tsed/logger` can load appenders from outside the core appenders. The type config value is used as a require path if no matching appender can be found. For example, the following configuration will create an appender with decorators: * * ```typescript * // consoleAppender.ts * import {Appender, BaseAppender, LogEvent} from "@tsed/logger"; * const consoleLog = console.log.bind(console); * * @ Appender({name: "console2"}) * export class ConsoleAppender extends BaseAppender { * write(loggingEvent: LogEvent) { * consoleLog(this.layout(loggingEvent, this.config.timezoneOffset)); * } * } * ``` * * This appender can be use like this: * * ```typescript * import {Logger} from "@tsed/logger"; * import "./consoleAppender.ts" * * const logger = new Logger("loggerName"); * * logger.appenders * .set("console-log", { * type: "console2", level: ["debug", "info", "trace"] * }); * ``` * */ export class BaseAppender { #layout; constructor(config) { this.config = config; this.configure(config); } get appenderOptions() { return this.__proto__.constructor.$appenderOptions; } configure(config) { Object.assign(this.config, config); this.#layout = Layouts.get(this.appenderOptions?.defaultLayout || "colored", this.config); if (this.config.layout) { this.#layout = Layouts.get(this.config.layout.type, this.config.layout); } return this; } /** * * @param args */ layout(...args) { return this.#layout.transform(...args); } } //# sourceMappingURL=BaseAppender.js.map