UNPKG

@tsed/logger-file

Version:
101 lines (100 loc) 3.33 kB
import { BaseAppender, LogEvent } from "@tsed/logger"; /** * ## File Appender * * The file appender writes log events to a file. It supports an optional maximum file size, and will keep a configurable number of backups. When using the file appender, you should also call `logger.shutdown()` when your application terminates, to ensure that any remaining asynchronous writes have finished. Although the file appender uses the streamroller library, this is included as a dependency of ts-log-debug so you do not need to include it yourself. * * ## Configuration * * * type - "file" * * filename - string - the path of the file where you want your logs written. * * maxLogSize - integer (optional) - the maximum size (in bytes) for the log file. If not specified, then no log rolling will happen. * * backups - integer (optional, default value = 5) - the number of old log files to keep during log rolling. * * layout - (optional, defaults to basic layout) - see layouts * * Any other configuration parameters will be passed to the underlying streamroller implementation (see also node.js core file streams): * * * encoding - string (default “utf-8”) * * mode - integer (default 0644) * * flags - string (default ‘a’) * * compress - boolean (default false) - compress the backup files during rolling (backup files will have .gz extension) * * ## Example * * ```typescript * import {Logger} from "@tsed/logger"; * * const logger = new Logger("loggerName"); * * logger.appenders.set("log-file", { * type: "file", * filename: "all-the-logs.log" * }); * logger.debug('I will be logged in all-the-logs.log'); * ``` * > This example will result in a single log file (all-the-logs.log) containing the log messages. * * ## Example with log rolling (and compressed backups) * * ```typescript * import {Logger} from "@tsed/logger"; * * const logger = new Logger("loggerName"); * * logger.appenders.set("log-file2", { * type: "file", * filename: "all-the-logs.log", * maxLogSize: 10485760, * backups: 3, * compress: true * }); * logger.debug('I will be logged in all-the-logs.log'); * ``` * * ::: * This will result in one current log file (all-the-logs.log). When that reaches 10Mb in size, it will be renamed and compressed to all-the-logs.log.1.gz and a new file opened called all-the-logs.log. When all-the-logs.log reaches 10Mb again, then all-the-logs.log.1.gz will be renamed to all-the-logs.log.2.gz, and so on. * ::: * * ## Example with date rolling * * ```typescript * import { Logger } from "@tsed/logger"; * export const logger = new Logger("Log Example"); * * logger.appenders * .set('file', { * type: 'file', * filename: `${__dirname}/../logs/myfile.log`, * pattern: '.yyyy-MM-dd' * }); * ``` * */ export declare class FileAppender extends BaseAppender { private writer; private listener; /** * */ reopen(): Promise<void>; /** * */ shutdown(): Promise<any>; /** * * @param loggingEvent */ write(loggingEvent: LogEvent): void; build(): void; /** * * @param file * @param fileSize * @param numFiles * @param pattern * @param options * @returns {streams.RollingFileStream} */ private openTheStream; }