UNPKG

3.77 kBTypeScriptView Raw
1/// <reference types="node" />
2import { ColorFunction, Colors } from './colors';
3import { WordWrapOptions } from './format';
4export interface LogRecord {
5 msg: string;
6 logger: Logger;
7 level?: LoggerLevelWeight;
8 format?: boolean;
9}
10export declare type LoggerLevel = 'DEBUG' | 'INFO' | 'WARN' | 'ERROR';
11export declare type LoggerLevelWeight = number;
12export declare type LoggerFormatter = (record: LogRecord) => string;
13export declare const LOGGER_LEVELS: {
14 readonly [L in LoggerLevel]: LoggerLevelWeight;
15};
16export declare const LOGGER_LEVEL_NAMES: ReadonlyMap<LoggerLevelWeight, LoggerLevel>;
17export declare function getLoggerLevelName(level?: LoggerLevelWeight): LoggerLevel | undefined;
18export declare function getLoggerLevelColor(colors: Colors, level?: LoggerLevelWeight): ColorFunction | undefined;
19export interface LoggerHandler {
20 formatter?: LoggerFormatter;
21 clone(): LoggerHandler;
22 handle(record: LogRecord): void;
23}
24export interface StreamHandlerOptions {
25 readonly stream: NodeJS.WritableStream;
26 readonly filter?: (record: LogRecord) => boolean;
27 readonly formatter?: LoggerFormatter;
28}
29export declare class StreamHandler implements LoggerHandler {
30 readonly stream: NodeJS.WritableStream;
31 readonly filter?: (record: LogRecord) => boolean;
32 formatter?: LoggerFormatter;
33 constructor({ stream, filter, formatter }: StreamHandlerOptions);
34 clone(opts?: Partial<StreamHandlerOptions>): StreamHandler;
35 handle(record: LogRecord): void;
36}
37export declare const DEFAULT_LOGGER_HANDLERS: ReadonlySet<StreamHandler>;
38export interface LoggerOptions {
39 readonly handlers?: Set<LoggerHandler>;
40 readonly level?: LoggerLevelWeight;
41}
42export declare class Logger {
43 handlers: Set<LoggerHandler>;
44 level: LoggerLevelWeight;
45 constructor({ level, handlers }?: LoggerOptions);
46 static cloneHandlers(handlers: ReadonlySet<LoggerHandler>): Set<LoggerHandler>;
47 /**
48 * Clone this logger, optionally overriding logger options.
49 *
50 * @param opts Logger options to override from this logger.
51 */
52 clone(opts?: Partial<LoggerOptions>): Logger;
53 /**
54 * Log a message as-is.
55 *
56 * @param msg The string to log.
57 */
58 msg(msg: string): void;
59 /**
60 * Log a message using the `debug` logger level.
61 *
62 * @param msg The string to log.
63 */
64 debug(msg: string): void;
65 /**
66 * Log a message using the `info` logger level.
67 *
68 * @param msg The string to log.
69 */
70 info(msg: string): void;
71 /**
72 * Log a message using the `warn` logger level.
73 *
74 * @param msg The string to log.
75 */
76 warn(msg: string): void;
77 /**
78 * Log a message using the `error` logger level.
79 *
80 * @param msg The string to log.
81 */
82 error(msg: string): void;
83 createRecord(msg: string, level?: LoggerLevelWeight, format?: boolean): LogRecord;
84 /**
85 * Log newlines using a logger output found via `level`.
86 *
87 * @param num The number of newlines to log.
88 * @param level The logger level. If omitted, the default output is used.
89 */
90 nl(num?: number, level?: LoggerLevelWeight): void;
91 /**
92 * Log a record using a logger output found via `level`.
93 */
94 log(record: LogRecord): void;
95 createWriteStream(level?: LoggerLevelWeight, format?: boolean): NodeJS.WritableStream;
96}
97export interface CreateTaggedFormatterOptions {
98 prefix?: string | (() => string);
99 titleize?: boolean;
100 wrap?: boolean | WordWrapOptions;
101 colors?: Colors;
102}
103export declare function createTaggedFormatter({ colors, prefix, titleize, wrap }?: CreateTaggedFormatterOptions): LoggerFormatter;
104export declare function createPrefixedFormatter(prefix: string | (() => string)): LoggerFormatter;
105
\No newline at end of file