【问题标题】:How to set custom loglevel in winston using typescript?如何使用打字稿在winston中设置自定义日志级别?
【发布时间】:2021-06-15 00:43:01
【问题描述】:

我在enum 中声明了LogLevel,winston 抛出了一个错误。那么levels 的类型应该是什么?

logger.ts

enum LogLevel {
  trace,
  debug,
  info,
  warn,
  error
}

const logConfig = {
  format: _format.json(),
  levels: LogLevel,
  transports: [
    new _transports.Console() 
  ]

const logger =  createLogger(logConfig);

错误

Argument of type '{ format: Format; levels: typeof LogLevel; level: string; transports: _transports.ConsoleTransportInstance[]; }' is not assignable to parameter of type 'LoggerOptions'.
  Types of property 'levels' are incompatible.
    Type 'typeof LogLevel' is not assignable to type 'AbstractConfigSetLevels'.
      Index signatures are incompatible.
        Type 'string' is not assignable to type 'number'.ts(2345)

【问题讨论】:

    标签: reactjs typescript enums winston


    【解决方案1】:

    解决方案

    不是将枚举直接传递给级别,而是在键值对中定义一个常量,如_logLevel 所示。

    enum LogLevel {
      trace,
      debug,
      info,
      warn,
      error
    }
    
    const _logLevel = {
      error: LogLevel.Error,
      warn: LogLevel.Warn,
      info: LogLevel.Info,
      debug: LogLevel.Debug,
      trace: LogLevel.Trace
    };
    
    const logConfig = {
      format: _format.json(),
      levels: _logLevel,
      transports: [
        new _transports.Console() 
      ]
    
    const logger =  createLogger(logConfig);
    
    
    

    【讨论】:

      猜你喜欢
      • 2019-04-17
      • 2013-03-10
      • 2018-11-21
      • 2019-04-04
      • 2015-04-21
      • 1970-01-01
      • 1970-01-01
      • 2015-02-14
      • 2012-08-18
      相关资源
      最近更新 更多