gpt4 book ai didi

javascript - bunyan log.child 正确的用例?

转载 作者:数据小太阳 更新时间:2023-10-29 04:10:24 25 4
gpt4 key购买 nike

我一直在寻找用于登录我的 nodejs 应用程序的 bunyan。我试过了,一切似乎都运行良好。我跳过了a sectionlog.child 上,但现在我正试图了解如何使用它。我认为它的目的是允许我为日志条目指定一些特殊标识符,以便我可以唯一地标识该日志与其他日志条目的关联方式。

如果是这样的话,我会设想自己在每个请求中都使用 log.child:

var bunyan = require('bunyan');
var log = bunyan.createLogger({name: 'myapp'});

router.post('/submit', function(req, res) {
var logChild = log.child({reqId: uuid.v4()});
logChild.info({ req:req }, req.user.name + ' has called /submit');

saveData(req)
.then(function(data) {
logChild.info({data: data}, req.user.name + ' has saved to DB successfully in /submit');
res.json({'success': 'Saved!'});
})
.error(function(err) {
logChild.error({ err: err }, req.user.name + ' has caused an error in /submit ');
res.status(500).json("error": err});
});
});

这样,如果用户 Bob 在 30 秒内向 /submit 发送两次 POST,日志文件中将有一些上下文区分两个不同的调用.

也就是说,我会看到这样的东西(有上下文):

Bob has called /submit uuid: 109156be-c4fb-41ea-b1b4-efe1671c5836
Bob has called /submit uuid: 49dlsd7i-dapd-fdio-fei0-sd59fd0ph34d
Bob has saved to DB successfully in /submit uuid: 109156be-c4fb-41ea-b1b4-efe1671c5836
Bob has caused an error in /submit uuid: 49dlsd7i-dapd-fdio-fei0-sd59fd0ph34d

而不是这个(没有上下文):

Bob has called /submit
Bob has called /submit
Bob has saved to DB successfully in /submit
Bob has caused an error in /submit

因此,对于我的 Nodejs 应用程序中的所有路由,我将创建 logChild 对象,然后使用 logChild 记录该路由中的条目。

我是否正确地理解实现log.child 的用例?

最佳答案

您似乎正确地使用了 log.child。我可以提出的一个建议是通过将 log 附加到 req 对象来帮助您“唯一地标识该日志与其他日志条目的关联方式”。这样,如果您有不同的中间件,您可以从多个地方访问具有相同唯一 ID 的相同记录器。例如:

var log = bunyan.createLogger({name: 'myapp'});

router.use(function(req, res, next) {
req.log = log.child({ user : req.user.id });
});

router.post('/submit', function(req, res) {
req.log.info('submitted request at ' + Date.now());
});

您现在将在日志中看到 { user : some_user_id, msg: 'submitted request at 01/03/15' },这使您能够将请求链中的任何中间件绑定(bind)到使用 req.log 对象的单个用户。

关于javascript - bunyan log.child 正确的用例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30040602/

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