根据温斯顿的文档
您还可以动态更改传输的日志级别:
温斯顿 2.x
var logger = new (winston.Logger)({
transports: [
new (winston.transports.Console)({ level: 'warn' }),
new (winston.transports.File)({ filename: 'somefile.log', level: 'error' })
]
});
logger.debug("Will not be logged in either transport!");
logger.transports.console.level = 'debug';
logger.transports.file.level = 'verbose';
logger.verbose("Will be logged in both transports!");
温斯顿 3.x
const transports = {
console: new winston.transports.Console({ level: 'warn': level: 'warn' }),
file: new winston.transports.File({ filename: 'combined.log', level: 'error' })
};
const logger = winston.createLogger({
transports: [
transports.console,
transports.file
]
});
logger.info('Will not be logged in either transport!');
transports.console.level = 'info';
transports.file.level = 'info';
logger.info('Will be logged in both transports!');
如果我这样创建,如何更改 3.0 中的级别
var logger = new (winston.Logger)({
transports: [
new (winston.transports.Console)({ level: 'warn' }),
new (winston.transports.File)({ filename: 'somefile.log', level: 'error' })
]
});
不是很明显,上一版的动态关卡机制比新版要好很多。
我也在寻找与上面类似的winston 3.x的解决方案
我在 winston.create() 函数之外进行了传输,并从外部进行了更改,它起作用了!
var transportsList = const transports = {
console: new winston.transports.Console({ level: 'warn': level: 'warn' }),
file: new winston.transports.File({ filename: 'combined.log', level: 'error' })
};
var logger = new (winston.Logger)({
transports: transportsList
});
//Then change below
transportsList.console.level = 'silly'
作为 #1191 的副本关闭。 这是我们的路线图,将在[email protected]
于 2018 年 5 月 29 日发布之前修复。
这对我有用,我给每个传输一个名称,按名称键入,因此我可以通过 ref 访问它,因为无法直接访问记录器对象。
`
var self = this;
self.logger = self.winston.createLogger({
levels:self.winston.config.syslog.levels
,transports:
[
new self.winston.transports.Console({
level: self.config.console.level.ref
,formatter: self._consoleLogFormatter
,name: 'console'
})
]
});
self.transports = _.keyBy(self.logger.transports,"name");
self.transports.console.level = 'info';
`