2013-05-11 64 views
7

我的JS代码通常是完整的console.log()调试消息。有时最好关闭它们,或者关掉它们中的一部分。Console.log调试消息管理

例如,我可以在某些函数中包含console.log()语句,其条件由某些常量定义。它是管理调试输出还是更优雅的替代方法的最佳方式?

回答

4

包装console.log成功能很好。但请注意,JavaScript中还有很多日志工具。关于“js logger”的一些谷歌可能会产生合适的结果。

+0

非常感谢!已经找到了一些东西! :) – zavg 2013-05-11 15:42:09

2

JS logger是一款相当不错的轻量级工具,具有日志消息级别和几个预定义日志级别(DEBUG,INFO,WARN,ERROR)的易懂设置。

5

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) 
3

如果您使用Node.js的那么debug是非常有效的,以替代CONSOLE.LOG()

它基本上执行console.log()除了可以在与DEBUG命令行启用它的替代品环境变量的基础上你如何在每个文件中初始化它。

比方说,我有从我的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”初始化调试,在第二个文件中使用“one-two”。

在命令行中,我可以这样运行了他们:

node index.js 

结果:没有调试输出。但是,如果我运行它是这样的:

DEBUG=* node index.js 

两个调试语句将被写入了,但是,在不同的色彩和调试名称(一对一或一两),所以我可以告诉它他们来自的文件。

现在让我们假设你想缩小一点。您可以运行:

DEBUG = * - 两个节点索引。JS

要只在名称末尾或

DEBUG =单*节点index.js

摆脱一个已经设定 “ - 两个” 调试输出获取以“one-”开头的所有内容

你也可以说你想要一切或一组东西,或者排除模式或集合。要排除的东西你用破折号它的前面,一个例子:

DEBUG =一个*,猴子*, - 猴子:香蕉,-elephant,-chimp:*节点index.js

这包括一切开始与“一”或“猴子”,并排除任何所谓的“猴子:香蕉”,或者“大象”或“黑猩猩:”开始

如果你想排除除了然后一切:

DEBUG = *, - patter n1,-pattern2节点index.js