filters
修改message
,然后rewrites
修改meta
。
使用winston v2 ^,如果我想过滤掉(不打印)某些消息,我有什么选择?
答案 0 :(得分:0)
我知道这个问题要求Winston 2,但也许Winston 3更相关,因为该线程大约有8个月了
对于Winston 2,请阅读https://github.com/winstonjs/winston/blob/2.4.0/docs/transports.md#console-transport并弄清楚,可能需要定义一个formatter
,因为这是该版本控制台传输选项中的一个支柱
通过阅读winston的源代码来弄清楚它。似乎依赖于此模块logform。
const logform = require('logform');
// const { MESSAGE } = require('triple-beam'); // prop for info in winston formater to expose the shown message
function filterMessagesFormat(filterFunc) {
const formatFunc = (info) => {
if (filterFunc(info.message)) return info;
return null;
};
const format = logform.format(formatFunc);
format.transform = formatFunc;
return format;
}
用法与它们定义的格式相同,例如json,colorize,simple等。
在winston.createLogger(options)
的选项中,您定义了一个名为transports
的prop,并且希望该数组的值之一是此函数的输出,例如:
transports: [
new winston.transports.Console({
format: winston.format.combine(
filterMessagesFormat((msg) => msg !== 'useless message'),
),
handleExceptions: false,
}),
我的个人记录器创建者功能https://gist.github.com/jtara1/3128cc6ed3dbea6d507b30967ab0e197,其中显示了一项更改,允许使用过滤器功能