Skip to content

Instantly share code, notes, and snippets.

@qiulang
Last active June 21, 2018 04:40
Show Gist options
  • Save qiulang/8b3af8f1fa440b3b92aaaa07f190e7c8 to your computer and use it in GitHub Desktop.
Save qiulang/8b3af8f1fa440b3b92aaaa07f190e7c8 to your computer and use it in GitHub Desktop.

debug 包的使用

比起console.logdebug module真的是好处多多。比如,可在运行时候配置关停;可对某块代码单独打log;不同颜色显示,显示两次调用时间差当然也是另一大好处。

这两篇文章把debug讲得很清楚

  1. https://developer.ibm.com/node/2016/09/15/lets-code-it-the-debug-module/
  2. https://developer.ibm.com/node/2016/10/12/the-node-js-debug-module-advanced-usage/

以前在浏览器使用时候,它不能像console.log那样打出是哪个文件哪一行打印的,这是它比console.log唯一的缺点,给debug开了一个问题单,结果真有人给解答了,方法就是给debug文件设置blackboxing 这样在浏览器里使用它的最大障碍就解除了。

在node里使用它另一大障碍是window平台启动方式要麻烦一点, 但是其实可以把配置启动debug的开关写在 process.env.DEBUG, 这样就保证跨平台启动

在vscode启动另一个问题是设置了 "outputCapture": "std" 会自动使用时间格式而不是用时间差

这个问题暂时没有好办法

debug vs morgan vs winston

使用debug可能另一个困惑是提供log的npm包实在是太多了, 什么时候该用哪个?它们能搭配使用吗?

不同的logger,写得比较好的大致还有这几篇(当然内容都差不多):

  1. Node logging best practices and tips
  2. LoggingThe Ultimate Guide

熟悉它们后就会意识到,它们使用场景是不一样,虽然在功能上有些重叠:debugjs 不能算logger,它真的是用来debug问题的; morgan可以当成debug工具调试http相关消息,也可以用作logger,记录http消息,比如出错的消息

我总结在SO这个问答里

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment