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

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

有人知道怎么做吗?

最佳答案

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

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' });
}

关于node.js - 在Express.js中使用Winston登录-如何针对不同的环境进行配置?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13157330/

10-12 00:59