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,信息,警告,错误)。