2013-05-11 61 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