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