摘要:今天我們要了解的庫是,一個專門用來控制輸出調(diào)試日志的庫。但是,隨著項目規(guī)模增加,控制臺輸出的日志就會堆積很多而不可讀。庫就是一款專門控制日志輸出的庫,能夠完美解決我們的上述需求。
NPM酷庫,每天兩分鐘,了解一個流行NPM庫。
今天我們要了解的庫是debug,一個專門用來控制輸出調(diào)試日志的庫。
通常,我們直接使用 console.log 輸出調(diào)試日志,使用console對象直接將日志輸出到控制臺,由于Node.js和瀏覽器環(huán)境都默認支持console對象,所以,這種方式是最直接和最簡潔的。
但是,隨著項目規(guī)模增加,console 控制臺輸出的日志就會堆積很多而不可讀。另一方面,我們需要在開發(fā)調(diào)試環(huán)境才打開日志,而線上生產(chǎn)環(huán)境就不需要輸出過多的日志。使用 console 對象控制日志輸出,我們會自然而然地以“加注釋”、“去注釋”的方式來控制日志的輸出。這樣很笨。
debug庫就是一款專門控制日志輸出的庫,能夠完美解決我們的上述需求。
首先,debug庫會判斷DEBUG環(huán)境變量,所以我們不需要修改代碼,只調(diào)整一下程序運行環(huán)境就可以控制日志是否輸出。另外,debug庫不是簡單地布爾判斷DEBUG環(huán)境變量,而是會對DEBUG環(huán)境變量進行解析,允許我們選擇性地控制輸出哪些模塊的日志,有效地解決了調(diào)試程序時候控制臺日志堆積問題,因為我們可以控制debug,讓其只輸出我們關心的程序模塊的日志。
下面就是一段使用了debug庫的程序示例。
const Debugger = require("debug"); const a = Debugger("worker:a"); const b = Debugger("worker:b"); function work() { a("doing lots of uninteresting work"); setTimeout(work, Math.random() * 1000); } work(); function workb() { b("doing some work"); setTimeout(workb, Math.random() * 2000); } workb();
如果設置環(huán)境變量DEBUG為 worker:* 那么就會輸出所有的日志:
如果設置環(huán)境變量DEBUG為 worker:a 那么就只會輸出worker:a 的日志:
從上述例子中,得知DEBUG環(huán)境變量的設置支持通配符*。假設,我們的程序中存在如下調(diào)試器 "connect:bodyParser"、"connect:compress"、"connect:session",我們可以將DEBUG設置為DEBUG=connect:bodyParser,connect:compress,connect:session ,或者簡單地使用通配符 DEBUG=connect:*,如果我們需要調(diào)試非connect相關的其他信息,可以使用 - 符號,“減去” connect,DEBUG=*,-connect:* 。
在瀏覽器端,debug也能夠很好地運行,不過在瀏覽器端開啟調(diào)試,并不是使用DEBUG環(huán)境變量,因為瀏覽器端不支持process.env.DEBUG訪問。在瀏覽器端,使用localStorage 對象控制debug:
localStorage.debug = "worker:*"
參考: https://github.com/visionmedi...
歡迎關注公眾號:梁興臣每天了解一個NPM庫,一年后成為Node.js高手
文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/90663.html
摘要:昨天,我們認識了庫的用法,用來控制輸出調(diào)試日志。今天我們再了解一個日志記錄的庫,一個多路傳輸?shù)娜罩居涗泿?。所謂多路傳輸,是指,你可以自定義多個日志儲存驅(qū)動,比如,將日志輸出到終端的同時,將重要日志記錄到文件中,甚至寫到數(shù)據(jù)庫中。 NPM酷庫,每天兩分鐘,了解一個流行NPM庫。 昨天,我們認識了debug庫的用法,用來控制輸出調(diào)試日志。但是,debug的特性適合于開發(fā)調(diào)試,并不適合程序記...
摘要:酷庫,每天兩分鐘,了解一個流行庫。今天,我們繼續(xù)認識另一個日志框架,這個框架和有些類似,也提供了多路日志輸出的功能。中稱之為,而中稱之為輸出源。日志分類,可以用來標志不同的程序模塊,類似庫中的效果,默認分類為。 NPM酷庫,每天兩分鐘,了解一個流行NPM庫。 前兩天,我們認識了 debug 庫 和 winston 庫,兩款管理程序日志的庫,其中debug偏向于適合開發(fā)調(diào)試,winsto...
摘要:有沒有優(yōu)雅的方式呢今天我們了解的庫就是專門來控制輸出棄用功能警告日志的。聲明棄用函數(shù)使用包裹一層我們要廢棄的函數(shù),那么這個函數(shù)在被第一次調(diào)用時,就會自動輸出警告信息。聲明棄用屬性使用聲明對象指定的屬性被棄用。 NPM酷庫,每天兩分鐘,了解一個流行NPM庫。 Node.js 高效率編程的基礎是大量的NPM開源庫,開發(fā)應用時,找特定領域的NPM庫要比自己從頭寫代碼要高效得多。如果某個領域沒...
摘要:將如下代碼寫入到文件中,并在環(huán)境里執(zhí)行如圖雖然這兩個輸出看起來可能一樣,但系統(tǒng)實際上對它的處理方式有不同。如圖如果你沒有啟動調(diào)試日志,則不會看到任何這樣的日志輸出。 原文地址: https://www.twilio.com/blog/g...原文作者: DOMINIK KUNDEL 翻譯作者: icepy 翻譯出處: https://github.com/lightningm... ...
摘要:前兩天,我們學習了中模式匹配文件列表的和的增強版,今天,我們將了解的基礎庫,用來模式匹配字符串的庫。 前兩天,我們學習了Node.js中模式匹配文件列表的 glob 和 glob 的增強版globby,今天,我們將了解 glob 的基礎庫: minimatch,用來模式匹配字符串的庫。 其實,glob庫支持的的各種模式都來自于minimatch。 minimatch 的用法 const...
閱讀 2084·2021-11-24 09:39
閱讀 2195·2021-09-22 15:50
閱讀 2155·2021-09-22 14:57
閱讀 776·2021-07-28 00:13
閱讀 1136·2019-08-30 15:54
閱讀 2418·2019-08-30 15:52
閱讀 2741·2019-08-30 13:07
閱讀 3909·2019-08-30 11:27