我们正在向我们的 node express 应用程序添加相关 ID,以将请求绑定在一起。这个 id 是从其他服务的标头中发送的,我们的中间件收集 id,创建一个带有 id 的 bunyan 记录器并将其添加到请求对象中。
我们的路线目前如下所示:
router.get('', (req, res, next) => {
service.doSomething(req.params.userid)
.then(items => res.json(items))
.catch((err) => next(err));
});
当前提出的解决方案类似于以下内容:
router.get('', (req, res, next) => {
let logger = req.log;
service.doSomething(req.params.userid, logger)
.then(items => res.json(items))
.catch((err) => next(err));
});
这意味着doSomething
它调用的每个函数都需要接受日志记录对象作为参数。这意味着几乎每个函数都需要接受一个日志对象。
例如:
function add(a, b, log) {
log.debug("Trivial example");
return a + b;
}
有没有更好的方法可以在每个请求的基础上进行此日志记录,而无需将日志记录对象传递给每个函数?