Console.logdebugging消息pipe理
我的JS代码通常是完整的console.log()
debugging消息。 有时最好把它们关掉,或closures一部分。
例如,我可以用某些常量定义的条件包装console.log()
语句。 是pipe理debugging输出还是更优雅的select?
将console.log
包装到一个函数中效果很好。 但请注意,也有很多日志工具在那里的JavaScript。 关于“jslogging器”的一点点google可能会产生合适的结果。
Bunyan日志logging模块在node.js中很stream行
示例代码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)
如果您使用的是Node.js,那么debug作为console.log()的替代方法是非常有效的。
它基本上是console.log()的替代品,除了你可以在命令行中使用DEBUG环境variables来启用它,这取决于你在每个文件中如何初始化它。
比方说,我有一个项目与从我的index.js文件引用的几个文件:
one.js
var debug = require('debug')('one-one'); var func = function() { debug('func'); }
two.js
var debug = require('debug')('one-two'); var func = function() { debug('func'); }
您已经在第一个文件中用名称“one-one”初始化debugging,在第二个文件中初始化为“one-two”。
在命令行我可以像这样运行它们:
node index.js
结果:没有debugging输出。 但是,如果我这样运行:
DEBUG=* node index.js
这两个debugging语句将被写出,但是,以不同的颜色和debugging名称(一个或一个),所以我可以告诉他们来自哪个文件。
现在让我们假设你想把它缩小一点。 你可以运行:
DEBUG = * – 两个节点的index.js
只能在名称末尾使用“-two”设置的debugging输出
DEBUG = one- * node index.js
以“one-”开头
你也可以说你想要所有东西,或者一组东西,或者排除模式或者集合。 要用短划线排除前面的内容,例如:
DEBUG = one *,monkey *, – monkey:banana,-ephant,-chimp:* node index.js
这将包括以“one”或“monkey”开头的所有内容,并排除任何名为“monkey:banana”或“elephant”或以“chimp:
如果你想排除一切,除非:
DEBUG = *, – pattern1,-pattern2节点index.js
JSlogging器是相当不错的轻量级工具,具有易于设置的日志消息级别和几个预定义的日志logging级别(debugging,信息,警告,错误)。