import { LogEvent } from "../../core/LogEvent.js"; import type { AppenderConfiguration, PartialAppenderConfiguration } from "../interfaces/AppenderConfiguration.js"; export interface AppenderOptions { name: string; defaultLayout?: string; } export interface BaseAppenderMethods { write(loggingEvent: LogEvent): any; build?(): any; reopen?(): any; shutdown?(): Promise | any | void; } /** * ## 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 declare abstract class BaseAppender implements BaseAppenderMethods { #private; readonly config: AppenderConfiguration; [key: string]: any; constructor(config: AppenderConfiguration); get appenderOptions(): AppenderOptions; configure(config: PartialAppenderConfiguration): this; /** * * @param args */ layout(...args: any[]): string; abstract write(loggingEvent: LogEvent): any; }