gpt4 book ai didi

javascript - Expressjs Morgan 动态格式化日志

转载 作者:搜寻专家 更新时间:2023-10-31 23:48:27 26 4
gpt4 key购买 nike

正在尝试通过应用程序运行时更改 morgan 的日志记录格式。

该值将根据数据库中的某个远程值而改变,我希望 morgan 的输出因此而改变。IE。如果在数据库中值为 1 morgan 的格式为 'dev',如果值为 3 则格式为 'combined'

我一直在使用以下行来设置 morgan 的格式:

app.use(morgan(get_verbose()))
.use ....

其中 get_verbose 将对应于格式选项。然而,它并没有提供我所希望的动态结果——它只设置了一次格式。

我是不是做错了,还是 morgan 在运行时仅限于一种格式?

最佳答案

一种方法是创建一个“包装”Morgan 中间件的中间件函数:

var morganDev = mordan('dev');
var morganCombined = morgan('combined');

app.use(function(req, res, next) {
var value = /* get value somehow */

if (value === 1) {
morganDev(req, res, next);
} else if (value === 3) {
morganCombined(req, res, next);
}
});

首先,您为您想要的每种日志格式创建一个记录器,但不要将它们中的任何一种附加到应用程序。取而代之的是,一个自定义函数读取该值并选择哪个记录器应该处理该请求。

安全更新:应该有一个包罗万象的 else block 来处理 value 既不是 1 也不是 3 的情况。这个 block 应该直接调用 next(),否则请求处理将停止并且永远不会向客户端返回响应。

关于javascript - Expressjs Morgan 动态格式化日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24961695/

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