NPM酷库,每天两分钟了解一个流行的NPM库。今天我们要学习的库是debug,一个专门用来控制调试日志输出的库。通常我们直接使用console.log输出调试日志,使用console对象直接将日志输出到控制台。由于Node.js和浏览器环境都默认支持console对象,所以这种方式最为直接简洁。但是随着项目规模的增大,console控制台输出的日志会堆积很多,变得不可读。另一方面,我们只需要在开发调试环境开启日志,而线上生产环境不需要输出太多的日志。使用console对象来控制日志输出,我们自然会通过“加注释”和“反注释”来控制日志输出。这很傻。debug库是一个专门用来控制日志输出的库,可以完美的解决我们上面的需求。首先调试库会判断DEBUG环境变量,所以我们不需要修改代码,只需要调整程序运行环境即可控制是否输出日志。另外,debug库不是简单的通过布尔判断DEBUG环境变量,而是对DEBUG环境变量进行分析,让我们可以选择性的控制输出哪些模块日志,有效的解决调试程序时控制台日志堆积的问题,因为我们调试可以控制让它只输出我们关心的程序模块的日志。下面是一个使用调试库的示例程序。constDebugger=require('debug');consta=Debugger('worker:a');constb=Debugger('worker:b');functionwork(){a('做很多无趣的工作');setTimeout(work,Math.random()*1000);}work();functionworkb(){b('做一些工作');setTimeout(workb,Math.random()*2000);}workb();如果环境变量DEBUG设置为worker:*,则输出所有日志:如果环境变量DEBUG设置为worker:a,则只输出worker:a的日志:从上面的例子我们知道DEBUG环境变量的设置支持通配符*。假设,我们的程序中有如下调试器“connect:bodyParser”、“connect:compress”、“connect:session”,我们可以将DEBUG设置为DEBUG=connect:bodyParser,connect:compress,connect:session,或者干脆使用通配符DEBUG=connect:*,如果我们需要调试其他非connect相关的信息,可以使用-symbol,"minus"connect,DEBUG=*,-connect:*。在浏览器端debug也能跑的很好,但是要在浏览器端开启调试,没有使用DEBUG环境变量,因为浏览器端不支持process.env.DEBUG访问。在浏览器端,使用localStorage对象控制debug:localStorage.debug='worker:*'参考:https://github.com/visionmedi...欢迎关注公众号:梁星辰懂一个npm库一年后的每一天成为Node.js高手
