@tsed/logger
Version:
A multi channel logger written in TypeScript.
60 lines • 1.73 kB
JavaScript
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