src/logger.ts
Methods |
constructor(opts?: Partial<LoggerConfig>)
|
||||||
Defined in src/logger.ts:57
|
||||||
Parameters :
|
debug | ||||||
debug(...args: Array
|
||||||
Defined in src/logger.ts:91
|
||||||
Parameters :
Returns :
void
|
error | ||||||
error(...args: Array
|
||||||
Defined in src/logger.ts:79
|
||||||
Parameters :
Returns :
void
|
info | ||||||
info(...args: Array
|
||||||
Defined in src/logger.ts:97
|
||||||
Parameters :
Returns :
void
|
warn | ||||||
warn(...args: Array
|
||||||
Defined in src/logger.ts:85
|
||||||
Parameters :
Returns :
void
|
import * as consoleLogLevel from 'console-log-level';
import {defaultConfig} from './config';
export type ConsoleLogLevel = 'error' | 'warn' | 'info' | 'debug';
export type LogLevel = 'silent' | ConsoleLogLevel;
/**
* The list of log levels.
*/
export const LEVELS: ReadonlyArray<LogLevel> = [
'silent',
'error',
'warn',
'info',
'debug',
];
export interface LoggerConfig {
/**
* The minimum log level that will print to the console.
*/
level: string | false;
/**
* A tag to use in log messages.
*/
tag: string;
}
function logLevelToName(level?: number): LogLevel {
if (typeof level === 'string') {
level = Number(level);
}
if (typeof level !== 'number') {
level = defaultConfig.logLevel;
}
if (level < 0) level = 0;
if (level >= LEVELS.length) level = LEVELS.length - 1;
return LEVELS[level];
}
export class Logger {
private logger: consoleLogLevel.Logger | null;
constructor(opts?: Partial<LoggerConfig>) {
const levelName =
opts && opts.level !== undefined
? opts.level
: logLevelToName(defaultConfig.logLevel);
if (levelName === false || levelName === 'silent') {
this.logger = null;
return;
}
this.logger = consoleLogLevel({
stderr: true,
prefix: `${
opts && opts.tag ? opts.tag : 'unknown'
} ${levelName.toUpperCase()}`,
level: levelName as ConsoleLogLevel,
});
}
error(...args: Array<{}>): void {
if (this.logger) {
this.logger.error(...args);
}
}
warn(...args: Array<{}>): void {
if (this.logger) {
this.logger.warn(...args);
}
}
debug(...args: Array<{}>): void {
if (this.logger) {
this.logger.debug(...args);
}
}
info(...args: Array<{}>): void {
if (this.logger) {
this.logger.info(...args);
}
}
}