[英]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.