gpt4 book ai didi

node.js - Winston/Morgan 日志记录避免重复条目

转载 作者:搜寻专家 更新时间:2023-11-01 00:27:16 27 4
gpt4 key购买 nike

我刚刚实现了 Winston Logging,它按预期工作,但我遇到了一些我无法找到答案的问题。

据我所知,winston 的工作方式、设置的日志级别和使用优先级以下的任何内容,例如错误时它还将包括信息日志等。有没有办法创建特定的日志级别让将其称为 HTTP 或 db,我只将 http 或 db 事件记录到其中,它们最终不会出现在组合文件或控制台中?

最佳答案

更好的解决方案是使用具有格式功能的单个记录器作为“级别过滤器”来指定哪个传输记录哪个特定级别。这是解决方案(请注意,levelFilter 可以很容易地扩展为采用一系列可接受的级别)。

关键的见解是,如果没有 info 对象从格式化程序链返回,则不会记录任何内容。

const { createLogger, format, transports } = require('winston');

const levelFilter = (level) =>
format((info, opts) => {
if (info.level != level) { return false; }
return info;
})();

const logger = createLogger({
transports: [
new transports.Console({
format: format.combine(
levelFilter("info"),
format.json()
)
}),
new transports.File({
filename: "test.log",
format: format.combine(
levelFilter("error"),
format.json()
)
}),
]
});

// ONLY is logged to test.log
logger.log({
level: 'error',
message: 'abcd'
});

// ONLY is logged to console
logger.log({
level: 'info',
message: '1234'
});

关于node.js - Winston/Morgan 日志记录避免重复条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56907439/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com