Почему мой регистратор Winston выводит эти необработанные объекты журнала? - PullRequest
0 голосов
/ 26 марта 2020

Я настроил свой экземпляр следующим образом

import { format, transports, createLogger, addColors, config } from 'winston'
import env from '@config'

const envLevelMap: { [key: string]: string } = {
   test: 'warning',
   development: 'trivial',
   staging: 'debug',
   production: 'error',
}

const customConfig: {
   levels: config.AbstractConfigSetLevels
   colors: config.AbstractConfigSetColors
} = {
   levels: {
      error: 0,
      warning: 1,
      info: 2,
      debug: 3,
      trivial: 4,
   },
   colors: {
      error: 'bold red yellowBG',
      warning: 'italic yellow blackBG',
      info: 'bold green whiteBG',
      debug: 'underline blue whiteBG',
      trivial: 'italic cyan magentaBG',
   },
}

const logger = <Extensions.Winston.CustomLeveledWinstonLogger>createLogger({
   levels: customConfig.levels,
   transports: [
      new transports.Console({
         level: envLevelMap[env.nodeEnv],
         format: format.combine(
            format.colorize(),
            format.timestamp({ format: 'hh:mm:ss' }),
            format.json(),
            format.prettyPrint(),
            format.splat(),
            format.errors({ stack: true }),
         ),
      }),
   ],
})

addColors(customConfig.colors)

export default logger

И указанный экземпляр выводит следующее

{
  message: 'Some message',
  level: '\u001b[47m\u001b[32m\u001b[1minfo\u001b[22m\u001b[39m\u001b[49m',
  timestamp: 04:34:27

}

Как вы, возможно, заметили, свойство level уровня зарегистрированного объекта имеет вид Werid строка с методом, используемым для входа прямо в середине. В приведенном выше примере указанным методом является «информация». «Странная» часть строки - фактически информация, которую консоль должна обработать, чтобы придать зарегистрированному сообщению соответствующее форматирование (цвет, шрифт и т. Д. c.).

Я использую консоль "cmd", но я уверяю вас, что это не является частью проблемы, поскольку Winston будет правильно регистрировать (цвета и все), когда я использовал простой экземпляр Winston. Проблема возникает только тогда, когда я пытаюсь настроить пользовательские уровни и цвета, даже если я делаю это в соответствии с документами . https://www.npmjs.com/package/winston#using -custom-logging-level .

Я использую TypeScript, кстати (на случай, если это как-то актуально).

...