2020-08-25 08:21:55 +00:00
|
|
|
import { createLogger, format, transports } from 'winston';
|
|
|
|
|
|
|
|
export type LoggerLevel = 'error' | 'warn' | 'info' | 'http' | 'verbose' | 'debug' | 'silly'
|
|
|
|
|
2020-08-25 22:11:26 +00:00
|
|
|
export function generateLoggerOptions(level: LoggerLevel, label: string = '') {
|
|
|
|
let readableFormat: any;
|
2020-08-25 08:21:55 +00:00
|
|
|
|
2020-08-25 22:11:26 +00:00
|
|
|
if (label) {
|
|
|
|
readableFormat = format.printf(({ level, message, timestamp, label }) => {
|
|
|
|
return `[${timestamp} ${level}] - ${label}: ${message}`;
|
|
|
|
});
|
|
|
|
} else {
|
|
|
|
readableFormat = format.printf(({ level, message, timestamp }) => {
|
|
|
|
return `[${timestamp} ${level}]: ${message}`;
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
return {
|
2020-08-25 08:21:55 +00:00
|
|
|
level,
|
2020-08-25 22:11:26 +00:00
|
|
|
format: label ? format.combine(
|
|
|
|
format.timestamp({
|
|
|
|
format: 'YYYY-MM-DD HH:mm:ss:ms'
|
|
|
|
}),
|
|
|
|
format.label({ label }),
|
|
|
|
format.errors({ stack: true }),
|
|
|
|
readableFormat
|
|
|
|
) : format.combine(
|
2020-08-25 08:21:55 +00:00
|
|
|
format.timestamp({
|
2020-08-25 22:11:26 +00:00
|
|
|
format: 'YYYY-MM-DD HH:mm:ss:ms'
|
2020-08-25 08:21:55 +00:00
|
|
|
}),
|
|
|
|
format.errors({ stack: true }),
|
|
|
|
readableFormat
|
|
|
|
),
|
|
|
|
exitOnError: false,
|
|
|
|
transports: [
|
|
|
|
new (transports.Console)({
|
|
|
|
format: format.combine(
|
|
|
|
format.colorize(),
|
|
|
|
readableFormat
|
|
|
|
)
|
|
|
|
}),
|
|
|
|
]
|
2020-08-25 22:11:26 +00:00
|
|
|
}
|
|
|
|
}
|
2020-08-25 08:21:55 +00:00
|
|
|
|
2020-08-25 22:11:26 +00:00
|
|
|
export function getLogger(level: LoggerLevel, label: string = '') {
|
|
|
|
return createLogger(generateLoggerOptions(level, label));
|
2020-08-25 08:21:55 +00:00
|
|
|
}
|