Winstonのドキュメントによる
トランスポートのログレベルを動的に変更することもできます。
ウィンストン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' })
]
});
以前のバージョンの動的レベル変更メカニズムが新しいバージョンよりもはるかに優れていることは明らかではありませんか。
上記と同様に、winston3.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の複製として閉じます。 これはロードマップにあり、2018年5月29日に[email protected]
がリリースされる前に修正される予定です。
これは私にとってはうまくいきました。ロガーオブジェクトに直接アクセスできないため、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';
`