51 lines
1.1 KiB
TypeScript
51 lines
1.1 KiB
TypeScript
import * as winston from 'winston';
|
|
import debug from 'debug';
|
|
import { buildWinstonLogger } from './build-winston-logger';
|
|
|
|
export class Logger {
|
|
private static winstonLogger: winston.Logger = buildWinstonLogger();
|
|
|
|
private debugger: any;
|
|
|
|
constructor(private readonly context?: string) {
|
|
this.debugger = debug(context || '');
|
|
}
|
|
|
|
info(message: string, ...args: any[]): void {
|
|
Logger.winstonLogger.info(message, {
|
|
context: this.context,
|
|
meta: {
|
|
args,
|
|
},
|
|
});
|
|
}
|
|
|
|
warn(message: string, ...args: any[]): void {
|
|
Logger.winstonLogger.warn(message, {
|
|
context: this.context,
|
|
meta: {
|
|
args,
|
|
},
|
|
});
|
|
}
|
|
|
|
error(error: any, ...args: any[]): void {
|
|
Logger.winstonLogger.error(error, {
|
|
context: this.context,
|
|
meta: {
|
|
args: [
|
|
...args,
|
|
...(error.stack ? [error.stack] : []),
|
|
...args
|
|
.filter(arg => !!arg.stack)
|
|
.map(arg => arg.stack),
|
|
],
|
|
},
|
|
});
|
|
}
|
|
|
|
debug(...args: any[]): void {
|
|
this.debugger(...args);
|
|
}
|
|
}
|