我的 JS 代码通常充满了console.log()
调试信息。有时最好关闭它们,或者关闭其中的一部分。
例如,我可以console.log()
使用由某些常量定义的条件将语句包装在某些函数中。它是管理调试输出的最佳方式还是更优雅的选择?
我的 JS 代码通常充满了console.log()
调试信息。有时最好关闭它们,或者关闭其中的一部分。
例如,我可以console.log()
使用由某些常量定义的条件将语句包装在某些函数中。它是管理调试输出的最佳方式还是更优雅的选择?
Bunyan日志记录模块在 node.js 中很受欢迎
示例代码hi.js
:
var bunyan = require('bunyan');
var log = bunyan.createLogger({name: 'myapp'});
log.info('hi');
log.warn({lang: 'fr'}, 'au revoir');
输出:
{"name":"myapp","hostname":"localhost","pid":40161,"level":30,"msg":"hi","time":"2013-01- 04T18:46:23.851Z","v":0}
{"name":"myapp","hostname":"localhost","pid":40161,"level":40,"lang":"fr","msg":"au revoir","time":"2013-01-04T18:46:23.853Z","v":0}
然后,您可以从命令行过滤:
$ node hi.js | bunyan -l warn
[2013-01-04T19:08:37.182Z] WARN: myapp/40353 on localhost: au revoir (lang=fr)
包装console.log
成一个函数效果很好。但请注意,还有很多用于 javascript 的日志记录实用程序。“js logger”上的小谷歌可能会产生合适的结果。
如果您使用的是 Node.js,那么debug作为 console.log() 的替代方法非常有效
它基本上是 console.log() 的替代品,除了您可以根据您在每个文件中初始化它的方式,使用 DEBUG 环境变量在命令行启用它。
假设我有一个项目,其中包含从我的 index.js 文件中引用的几个文件:
one.js
var debug = require('debug')('one-one');
var func = function() {
debug('func');
}
二.js
var debug = require('debug')('one-two');
var func = function() {
debug('func');
}
您已在第一个文件中使用名称“one-one”初始化调试,在第二个文件中使用名称“one-two”初始化。
在命令行上,我可以像这样运行它们:
node index.js
结果:没有调试输出。但是,如果我这样运行它:
DEBUG=* node index.js
然而,这两个调试语句都会以不同的颜色和调试名称(一一或一二)被写出,这样我就可以知道它们来自哪个文件。
现在假设您想进一步缩小范围。你可以运行:
DEBUG=*-二节点index.js
仅从名称末尾使用“-two”设置的调试中获取输出或
DEBUG=one-* 节点 index.js
让一切都以“one-”开头
你也可以说你想要所有东西,或者一组东西,或者排除模式或集合。要排除某些内容,请在其前面加上破折号,例如:
DEBUG=one*,monkey*,-monkey:banana,-elephant,-chimp:* node index.js
这将包括以“one”或“monkey”开头的所有内容,并排除任何名为“monkey:banana”或“elephant”或以“chimp:”开头的内容
如果您想排除除此之外的所有内容:
DEBUG=*,-pattern1,-pattern2 节点 index.js
JS logger是一个非常好的轻量级工具,具有灵活的日志消息级别设置和几个预定义的日志级别(DEBUG、INFO、WARN、ERROR)。