xpm
Version:
The xPack project manager command line tool
117 lines (116 loc) • 3.75 kB
TypeScript
/// <reference types="node" />
export type LogLevel = 'silent' | 'error' | 'warn' | 'info' | 'verbose' | 'debug' | 'trace' | 'all';
export type NumericLogLevel = number;
export interface LoggerParameters {
level?: LogLevel;
console?: Console;
}
export declare class Logger {
static defaultLevel: LogLevel;
/**
* @summary Internal numerical values for the log level.
*/
static numericLevels: {
silent: number;
error: number;
warn: number;
info: number;
verbose: number;
debug: number;
trace: number;
all: number;
};
/**
* @summary The value used for the undefined log level (maximum value).
*/
static numericLevelUndefined: NumericLogLevel;
/**
* @summary The value used for the always case (minimum value).
*/
static numericLevelAlways: NumericLogLevel;
private readonly _console;
private _numericLevel;
private _level;
private _buffer;
/**
* @summary Create a logger instance for a given console.
*
* @param {LoggerParameters} params The generic params object.
* @param {Console} params.console Reference to a console (an object with at
* least two functions, `log()` and `error()`)
* @param {LogLevel} params.level A log level; may be undefined and set later.
*
* @description
* If the log level is undefined, the logger is created in a preliminary
* state, when all log lines will be stored in an internal buffer,
* until the log level is known.
*
* If no `console` is given, the system `console` is used.
*/
constructor(params?: LoggerParameters);
get hasLevel(): boolean;
/**
* @summary Setter for the log level.
*
* @param {LogLevel} level The new log level.
*
* @description
* If the log level is not one of the known strings, an assert will fire.
* The first time the level is set, the internal buffer is flushed.
*/
set level(level: LogLevel | undefined);
/**
* @summary Getter for the log level.
*
* @returns {LogLevel} The log level.
*/
get level(): LogLevel | undefined;
get isSilent(): boolean;
get isError(): boolean;
get isWarn(): boolean;
get isInfo(): boolean;
get isVerbose(): boolean;
get isDebug(): boolean;
get isTrace(): boolean;
get isAll(): boolean;
get console(): Console;
/**
* @summary Internal log writer.
*
* @param {NumericLogLevel} numericLevel The log numeric level.
* @param {Function} loggerFunction The function to be used to write
* the message.
* @param {string} message The log message.
* @returns {void} Nothing.
*
* @description
* If the log level was defined, call the function, otherwise
* store the log line details in the array buffer, for later
* processing, when the log level is defined.
*
* @private
*/
private write_;
/**
* @summary Output always.
*
* @param {string} msg Message.
* @param {*} args Possible arguments.
* @returns {void} Nothing.
*
* @description
* The message is always passed to the console, regardless the
* log level.
*
* Use this instead of console.log(), which in Node.js always
* refers to the process console, not the possible REPL streams.
*/
always(msg?: any, ...args: any[]): void;
error(msg: Error): void;
output(msg?: any, ...args: any[]): void;
warn(msg?: any, ...args: any[]): void;
info(msg?: any, ...args: any[]): void;
verbose(msg?: any, ...args: any[]): void;
debug(msg?: any, ...args: any[]): void;
trace(msg?: any, ...args: any[]): void;
}