在Express.js中使用Winston进行日志记录 - 如何针对不同的环境进行配置?

时间:2012-10-31 11:54:21

标签: node.js logging express winston

我已经开始使用Winston来记录我的node / express.js应用程序的错误和事件。

我还没想到的一件事是如何为不同的环境(开发/测试/生产)指定不同的Winston传输(或其他配置)。例如。我想在开发环境中将所有内容记录到控制台,但在生产中使用不同的传输。

任何人都知道怎么做?

1 个答案:

答案 0 :(得分:7)

据我所知,没有“标准”方法可以做到这一点,但你可能会这样做:

var myLogTransports = [];

if (process.env.NODE_ENV == 'production') {
  myLogTransports.push(new (winston.transports.File)({ filename: 'somefile.log' }));
}
else {
  myLogTransports.push(new (winston.transports.Console)({ level: 'error' })));
}

var logger = new (winston.Logger)({
  transports: myLogTransports,
});

Winston现在支持动态添加记录器。有关详细信息,请参阅Working with Transports部分。最初的答案可以这样重写:

var logger = new winston.Logger();

if (process.env.NODE_ENV == 'production') {
  logger.add(winston.transports.File, { filename: 'somefile.log' });
}
else {
  logger.add(winston.transports.Console, { level: 'error' });
}