【问题标题】:Winston only writes to a single transportWinston 仅写入单个传输
【发布时间】:2016-06-13 16:15:19
【问题描述】:

我正在使用自定义 winston 记录器来同时写入控制台和文件,具体取决于日志记录级别(即控制台的任何内容,但只有文件的错误和警告)。出于某种原因,写入控制台是有效的,而文件中没有写入任何内容,即使我调用了错误。

最初我弄乱了级别的顺序,从trace = 0 到error = 9。虽然我将设置winston 写入文件但没有写入控制台。我假设winston 只写入一个传输然后停止?

我的配置是这样的:

import winston from 'winston';

const logger = new (winston.Logger)({
  levels: {
    trace: 9,
    input: 8,
    verbose: 7,
    prompt: 6,
    debug: 5,
    info: 4,
    data: 3,
    help: 2,
    warn: 1,
    error: 0,
  },
  colors: {
    trace: 'magenta',
    input: 'grey',
    verbose: 'cyan',
    prompt: 'grey',
    debug: 'blue',
    info: 'green',
    data: 'grey',
    help: 'cyan',
    warn: 'yellow',
    error: 'red',
  },
});

logger.add(winston.transports.Console, {
  level: 'trace',
  prettyPrint: true,
  colorize: true,
  silent: false,
  timestamp: false,
});

logger.add(winston.transports.File, {
  prettyPrint: false,
  level: 'error',
  silent: false,
  colorize: true,
  timestamp: true,
  filename: `${__dirname}/../logs/error.log`,
  maxsize: 40000,
  maxFiles: 10,
  json: false,
});

【问题讨论】:

    标签: node.js logging winston


    【解决方案1】:

    看来我不得不给每个传输一个名字。即

    logger.add(winston.transports.Console, {
      name: 'trace-console',
      // ...
    });
    
    logger.add(winston.transports.File, {
      name: 'error-file',
      // ...
    });
    

    现在它似乎按预期工作了。

    编辑:出于某种原因,两者都必须将 colorize 选项也设置为 true (?)。

    【讨论】:

      猜你喜欢
      • 2018-08-22
      • 2014-07-20
      • 2020-01-03
      • 2015-04-24
      • 2014-12-02
      • 2019-05-20
      • 1970-01-01
      • 2018-07-30
      • 2014-11-10
      相关资源
      最近更新 更多