同様の問題があり、これが私が思いついたものです。これは、ログ関数を空の関数に設定するだけで実行できます。これは、私が修正した私のコードで、似たようなことを行いました。このコードは、customSilenceLevelLow と customSilenceLevelHigh を取り、customSilenceLevelLow 以下の値を持つログ関数は空の関数に設定され、customSilenceLevelHigh 以上の値を持つログ関数は空の関数に設定されます。
したがって、このコードでは、レベル info、info2、および info3 のログのみがコンソールに記録されます。残りはしません。
注: これらの変更をテストしなかったため、構文エラーが発生する可能性がありますが、ロジックは適切であるはずです。
winston = require("winston")
var levels = {levels: {
debug: 0,
debug2: 1,
debug3: 2,
verbose: 3,
verbose2: 4,
verbose3: 5,
info: 6,
info2: 7,
info3: 8,
silly: 9,
warn: 10,
error: 11
},
colors: {
debug: "blue",
debug2: "cyan",
debug3: "grey",
verbose: "cyan",
verbose2: "magenta",
verbose3: "blue",
info: "green",
info2: "magenta",
info3: "grey",
silly: "green",
warn: "yellow",
error: "red"
}}
//needed so that new levels and colors are recognized
winston.setLevels(levels.levels)
winston.addColors(levels.colors);
//add color to log text
winston.default.transports.console.colorize = true
winston.default.transports.console.prettyPrint = true
//false is default silences transport
winston.default.transports.console.silent = false
winston.default.transports.console.level = "debug"
var customSilenceLevelLow = "info"
var customSilenceLevelHigh = "info3"
for (var k in levels.levels) {
if (levels.levels[k] <= levels.levels[customSilenceLevelLow] || levels.levels[k] >= levels.levels[customSilenceLevelHigh]) {
//create an empty function to silence logs
winston[k] = function () {}
}
}