首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正确使用nodejs bunyan记录错误?

正确使用nodejs bunyan记录错误?
EN

Stack Overflow用户
提问于 2015-05-04 01:47:16
回答 1查看 7.7K关注 0票数 3

我阅读了Joyent的死后调试文章和我们使用bunyan的他们建议

他们讨论了日志信息的质量是如何非常重要的,并可以帮助解决错误时出现。还有一些外部博客站点展示了如何在Nodejs应用程序中安装和运行bunyan,这很不错。

但对于如何有效地使用日志(无论是针对bunyan的日志记录实践还是一般的日志记录实践),我都是新手。我有三个相互关联的问题。

(1)我是否应该使用bunyan来记录我的应用程序中发生的每一个动作?

呃,

代码语言:javascript
复制
router.post('/submit', function(req, res) {
    log.info({ req:req }, req.user.name + ' has called /submit');

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

..。在我的申请中到处都是如此?

(2)如果是这样的话,我会不会将日志输出分割成不同的部分呢?例如,如果有3个并发用户调用/submit,那么消息可能是:

代码语言:javascript
复制
Alice has called /submit
Bob has called /submit
Alice has caused an error in /submit
Carol has called /submit
Bob has saved to DB successfully in /submit
Carol has saved to DB successfully in /submit

是那么回事吗?如果我有一个Bob的堆栈跟踪,并且我试图在程序崩溃之前获得系统状态的先验知识,我将不得不以某种方式过滤掉其他人,并按时间戳排序,以获得Bob的一致事件顺序。

(3)我应该使用bunyan来记录堆栈跟踪吗?即,将err.stack添加到bunyan记录器中:

代码语言:javascript
复制
.error(function(err) {
    log.error({ err: err, stacktrace: err.stack }, req.user.name + ' has caused an error in /submit ');
    res.status(500).json("error": err});
});

..。或者,对于日志记录和报告错误是否还有其他标准做法(这基本上意味着保存堆栈跟踪?)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-04 02:15:08

(1)我是否应该使用bunyan记录在我的应用程序中发生的每一个动作?

是的,基本上。有一些更好的点,但基本上你想做一个良好的信号/噪声权衡,同时保持合理的可能性,成功的死后调试。记录太多从不失败的代码路径,您就会淹没在噪音中。不要进行足够的日志记录,你可能真的不知道是什么导致了一个问题。别太担心这件事。这是一种只有通过经验才能获得的感觉,从日志分析中可以很容易地看出,您在哪里产生噪音,并且可以在事实发生后将其调下来或过滤掉,而且您有大量复杂的代码正在执行,没有记录任何细节,您需要在那里添加更多日志记录。

(2)如果是这样的话,我就不会得到不相交的日志输出了吗?

是的,但没关系。您可以使用后处理工具将它们重新连接到一个更连贯的叙述中。常见技术包括记录每个请求的唯一请求ID以及sessionID。这样,您就可以过滤单个用户的会话,或者只过滤一个有趣的请求。

(3)我是否应该用bunyan来记录堆栈痕迹?

是的,但是bunyan包含用于错误实例的标准序列化程序,所以只需将属性命名为err并启用标准序列化程序,您就会得到正确记录的错误消息和堆栈跟踪。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30021466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档