簡體   English   中英

Console.log調試消息管理

[英]Console.log debug messages managing

我的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');
}

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 = * - 兩個節點index.js

僅從名稱末尾的“-two”設置的調試中獲取輸出或

DEBUG = one- * node index.js

從“one-”開始

您還可以說您想要所有內容,或一組內容,或排除模式或集合。 要使用短划線排除前面的內容,請執行以下示例:

DEBUG = one *,monkey *, - monkey:banana,-elephant,-chimp:* node index.js

這將包括以“one”或“monkey”開頭的所有內容,並排除任何名為“monkey:banana”或“elephant”或以“chimp:”開頭的內容

如果你想排除除此之外的所有內容:

DEBUG = *, - pattern1,-pattern2 node index.js

JS logger是非常好的輕量級工具,具有日志消息級別和幾個預定義日志記錄級別(DEBUG,INFO,WARN,ERROR)的靈活設置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM