/// import { ColorFunction, Colors } from './colors'; import { WordWrapOptions } from './format'; export interface LogRecord { msg: string; logger: Logger; level?: LoggerLevelWeight; format?: boolean; } export declare type LoggerLevel = 'DEBUG' | 'INFO' | 'WARN' | 'ERROR'; export declare type LoggerLevelWeight = number; export declare type LoggerFormatter = (record: LogRecord) => string; export declare const LOGGER_LEVELS: { readonly [L in LoggerLevel]: LoggerLevelWeight; }; export declare const LOGGER_LEVEL_NAMES: ReadonlyMap; export declare function getLoggerLevelName(level?: LoggerLevelWeight): LoggerLevel | undefined; export declare function getLoggerLevelColor(colors: Colors, level?: LoggerLevelWeight): ColorFunction | undefined; export interface LoggerHandler { formatter?: LoggerFormatter; clone(): LoggerHandler; handle(record: LogRecord): void; } export interface StreamHandlerOptions { readonly stream: NodeJS.WritableStream; readonly filter?: (record: LogRecord) => boolean; readonly formatter?: LoggerFormatter; } export declare class StreamHandler implements LoggerHandler { readonly stream: NodeJS.WritableStream; readonly filter?: (record: LogRecord) => boolean; formatter?: LoggerFormatter; constructor({ stream, filter, formatter }: StreamHandlerOptions); clone(opts?: Partial): StreamHandler; handle(record: LogRecord): void; } export declare const DEFAULT_LOGGER_HANDLERS: ReadonlySet; export interface LoggerOptions { readonly handlers?: Set; readonly level?: LoggerLevelWeight; } export declare class Logger { handlers: Set; level: LoggerLevelWeight; constructor({ level, handlers }?: LoggerOptions); static cloneHandlers(handlers: ReadonlySet): Set; /** * Clone this logger, optionally overriding logger options. * * @param opts Logger options to override from this logger. */ clone(opts?: Partial): Logger; /** * Log a message as-is. * * @param msg The string to log. */ msg(msg: string): void; /** * Log a message using the `debug` logger level. * * @param msg The string to log. */ debug(msg: string): void; /** * Log a message using the `info` logger level. * * @param msg The string to log. */ info(msg: string): void; /** * Log a message using the `warn` logger level. * * @param msg The string to log. */ warn(msg: string): void; /** * Log a message using the `error` logger level. * * @param msg The string to log. */ error(msg: string): void; createRecord(msg: string, level?: LoggerLevelWeight, format?: boolean): LogRecord; /** * Log newlines using a logger output found via `level`. * * @param num The number of newlines to log. * @param level The logger level. If omitted, the default output is used. */ nl(num?: number, level?: LoggerLevelWeight): void; /** * Log a record using a logger output found via `level`. */ log(record: LogRecord): void; createWriteStream(level?: LoggerLevelWeight, format?: boolean): NodeJS.WritableStream; } export interface CreateTaggedFormatterOptions { prefix?: string | (() => string); titleize?: boolean; wrap?: boolean | WordWrapOptions; colors?: Colors; tags?: ReadonlyMap; } export declare function createTaggedFormatter({ colors, prefix, tags, titleize, wrap }?: CreateTaggedFormatterOptions): LoggerFormatter; export declare function createPrefixedFormatter(prefix: string | (() => string)): LoggerFormatter;