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