| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- import { createLogger, format, transports, Logger } from 'winston'
- import { SPLAT as SPLAT_Symbol } from 'triple-beam'
- import moment from 'moment'
- import { inspect } from 'util'
- // Workaround until fixed.
- // https://github.com/winstonjs/logform/issues/111
- const SPLAT = SPLAT_Symbol as unknown as string
- export class LoggerUtil {
- public static getLogger(label: string): Logger {
- return createLogger({
- format: format.combine(
- format.label(),
- format.colorize(),
- format.label({ label }),
- format.printf(info => {
- if(info[SPLAT]) {
- if(info[SPLAT].length === 1 && info[SPLAT][0] instanceof Error) {
- const err = info[SPLAT][0] as Error
- if(info.message.length > err.message.length && info.message.endsWith(err.message)) {
- info.message = info.message.substring(0, info.message.length-err.message.length)
- }
- } else if(info[SPLAT].length > 0) {
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- info.message += ' ' + info[SPLAT].map((it: any) => {
- if(typeof it === 'object' && it != null) {
- return inspect(it, false, null, true)
- }
- return it
- }).join(' ')
- }
- }
- return `[${moment().format('YYYY-MM-DD hh:mm:ss').trim()}] [${info.level}] [${info.label}]: ${info.message}${info.stack ? `\n${info.stack}` : ''}`
- })
- ),
- level: process.env.NODE_ENV === 'test' ? 'emerg' : 'debug',
- transports: [
- new transports.Console()
- ]
- })
- }
- }
|