nope/lib/logger/getLogger.ts
2020-08-26 00:11:26 +02:00

48 lines
1.3 KiB
TypeScript

import { createLogger, format, transports } from 'winston';
export type LoggerLevel = 'error' | 'warn' | 'info' | 'http' | 'verbose' | 'debug' | 'silly'
export function generateLoggerOptions(level: LoggerLevel, label: string = '') {
let readableFormat: any;
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 {
level,
format: label ? format.combine(
format.timestamp({
format: 'YYYY-MM-DD HH:mm:ss:ms'
}),
format.label({ label }),
format.errors({ stack: true }),
readableFormat
) : format.combine(
format.timestamp({
format: 'YYYY-MM-DD HH:mm:ss:ms'
}),
format.errors({ stack: true }),
readableFormat
),
exitOnError: false,
transports: [
new (transports.Console)({
format: format.combine(
format.colorize(),
readableFormat
)
}),
]
}
}
export function getLogger(level: LoggerLevel, label: string = '') {
return createLogger(generateLoggerOptions(level, label));
}