5

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

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

有人知道怎么做吗?

4

1 回答 1

9

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

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 现在支持动态添加记录器。有关更多信息,请参阅使用传输部分。原来的答案可以这样改写:

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' });
}
于 2012-10-31T12:01:31.743 回答