有一个类似的问题,这就是我想出的。这可以通过将日志函数设置为空函数来完成。这是我修改的一些代码,它做了类似的事情。此代码采用 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 () {}
}
}