105 lines
3.8 KiB
TypeScript
105 lines
3.8 KiB
TypeScript
/// <reference types="node" />
|
|
import { WordWrapOptions } from '@ionic/utils-terminal';
|
|
import { ColorFunction, Colors } from './colors';
|
|
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<LoggerLevelWeight, LoggerLevel>;
|
|
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<StreamHandlerOptions>): StreamHandler;
|
|
handle(record: LogRecord): void;
|
|
}
|
|
export declare const DEFAULT_LOGGER_HANDLERS: ReadonlySet<StreamHandler>;
|
|
export interface LoggerOptions {
|
|
readonly handlers?: Set<LoggerHandler>;
|
|
readonly level?: LoggerLevelWeight;
|
|
}
|
|
export declare class Logger {
|
|
handlers: Set<LoggerHandler>;
|
|
level: LoggerLevelWeight;
|
|
constructor({ level, handlers }?: LoggerOptions);
|
|
static cloneHandlers(handlers: ReadonlySet<LoggerHandler>): Set<LoggerHandler>;
|
|
/**
|
|
* Clone this logger, optionally overriding logger options.
|
|
*
|
|
* @param opts Logger options to override from this logger.
|
|
*/
|
|
clone(opts?: Partial<LoggerOptions>): 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<LoggerLevelWeight, string>;
|
|
}
|
|
export declare function createTaggedFormatter({ colors, prefix, tags, titleize, wrap }?: CreateTaggedFormatterOptions): LoggerFormatter;
|
|
export declare function createPrefixedFormatter(prefix: string | (() => string)): LoggerFormatter;
|