我已经开始使用Winston来记录我的node / express.js应用程序的错误和事件。
我还没想到的一件事是如何为不同的环境(开发/测试/生产)指定不同的Winston传输(或其他配置)。例如。我想在开发环境中将所有内容记录到控制台,但在生产中使用不同的传输。
任何人都知道怎么做?
答案 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' });
}