欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

使用Node.js“debug”模塊避免日志污染應(yīng)用程序日志

本篇文章給大家介紹一下使用Node.js “debug”模塊避免日志污染應(yīng)用程序日志的方法。有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)大家有所幫助。

創(chuàng)新互聯(lián)建站服務(wù)項(xiàng)目包括淶水網(wǎng)站建設(shè)、淶水網(wǎng)站制作、淶水網(wǎng)頁(yè)制作以及淶水網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,淶水網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到淶水省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

視頻教程推薦:nodejs 教程

你是否有過(guò)這樣的經(jīng)歷,當(dāng)把 logging 添加到自定義 Node 模塊中,并認(rèn)為自己將會(huì)從這些額外信息中受益,卻發(fā)現(xiàn)當(dāng)你將模塊添加為依賴項(xiàng)并運(yùn)行 npm installnpm start時(shí),你的程序日志就會(huì)像下面嗎?

你如何找到自己實(shí)際需要的信息?比如都有哪些用戶登錄以及何時(shí)登錄,而不是來(lái)自應(yīng)用程序依賴項(xiàng)的信息:

同樣,當(dāng)你懷疑由于你的團(tuán)隊(duì)對(duì) Node 模塊依賴項(xiàng)所做的更改而導(dǎo)致性能下降時(shí),唯一需要解決的日志如下:

從全局來(lái)看,這是日志污染的樣子:

我們想要什么

理想的日志記錄方案能夠使模塊日志不進(jìn)入程序或服務(wù)的日志記錄,但能夠在需要時(shí)將其打開(kāi)以進(jìn)行故障排除。

為此,我將向你展示如何使用 debug 模塊來(lái)打開(kāi)或關(guān)閉 Node 模塊中的日志。

如果你不需要它們,并且使用該模塊的服務(wù)運(yùn)行良好,則將其設(shè)置為 OFF

ON用于遇到問(wèn)題并需要盡可能多的日志信息時(shí)。

debug模塊概述

在功能方面,請(qǐng)不要像通常在調(diào)試器中那樣來(lái)考慮調(diào)試模塊(就像你在 ID E中設(shè)置斷點(diǎn)的方式一樣),而應(yīng)更像是被修改后的 console模塊。這是一種可讓你根據(jù)需要打開(kāi)和關(guān)閉日志的工具。如果到其 GitHub頁(yè)面(https://github.com/visionmedi...),則還會(huì)看到它的其他各種功能,例如命名空間等。暫時(shí)不用管這些,現(xiàn)在只需要知道它是一種可以優(yōu)化你的生產(chǎn)環(huán)境的工具即可。

在你自己的 Node 模塊中實(shí)現(xiàn)debug

讓我們來(lái)看一個(gè)在代碼中使用 debug的例子。假設(shè)下面是一個(gè)模塊:

const debug = require('debug');
const log = debug('http:server');
const http = require('http');
const name = 'Demo App for debug module';
 
log('booting %o', name);
 
http.createServer((req, res) => {
  log(req.method + ' ' + req.url);
  res.end('debug example\\n');
}).listen(3200, () => {
  log('listening');
});

實(shí)現(xiàn) debug很容易。我們要做的就是 import 或 require 模塊,然后創(chuàng)建一個(gè)logger —— const log = debug('http:server');。你只需將特定 logger 的標(biāo)記或命名空間 ‘http:server‘ 傳遞給 DEBUG環(huán)境變量,以啟用調(diào)試功能即可。

啟動(dòng)應(yīng)用程序時(shí)(即導(dǎo)入該模塊的程序),你將會(huì)像這樣去啟動(dòng)它:

DEBUG=http:server node app-entrypoint.js

如果我們希望使用單獨(dú)的 logger 來(lái)切換某些日志怎么辦?例如,如果我們只想切換到 error 怎么辦?就像創(chuàng)建另一個(gè) logger 一樣簡(jiǎn)單,就像這樣:

const debug = require('debug');
const log = debug('http:server');
const errorLogger = debug('http:error'); // create new logger here, passing it a new namespace
const http = require('http');
const name = 'Demo App for debug module';
 
log('booting %o', name);
 
http.createServer((req, res) => {
  log(req.method + ' ' + req.url);
  res.end('hello\\n');
 
  // fake an error to demonstrate using debug for http:error namespace
  setTimeout(() => {
    errorLogger('fake error'); // then call the logger 
  }, 1000);
}).listen(3200, () => {
  log('listening');
});

如下所示將會(huì)僅打開(kāi)錯(cuò)誤:

DEBUG=http:error node app-entrypoint.js

而且,當(dāng)你要記錄所有命名空間的日志時(shí)(在這種情況下,是 http:serverhttp:error),只需傳遞通配符 *即可。

DEBUG=http:* node app-entrypoint.js

讓我們看看這些日志現(xiàn)在是什么樣的:

然后,當(dāng)我們加載頁(yè)面時(shí):

注意,debug會(huì)寫入 stderr而不是 stdout,所以如果你有一個(gè)根據(jù)不同的來(lái)源提取日志的日志路由,這些調(diào)試日志將最終會(huì)存儲(chǔ)在 stderr 流中。

最后,你還可以選擇:

你可以記錄所有用 debug編寫的模塊的日志。或者,你仍然可以用 console.log()/console.error()記錄某些內(nèi)容,而另一些記錄 debug

如果你有必須要記錄的事項(xiàng),并且與使用該模塊的應(yīng)用程序有關(guān),請(qǐng)用 console將其記錄下來(lái)。但是如果你不這樣做,就會(huì)用 debug記錄所有的內(nèi)容。

為第三方模塊打開(kāi) debug

到目前為止,如果你(或你的團(tuán)隊(duì))編寫了該模塊,那么我們所介紹的內(nèi)容就很棒。

但是如果你用的是第三方模塊,那需要打開(kāi)調(diào)試時(shí)該怎么辦?

也許你已經(jīng)對(duì)程序的各個(gè)部分進(jìn)行了故障排除,不夠現(xiàn)在假設(shè)你正在使用的開(kāi)源模塊可能會(huì)讓你遇到問(wèn)題。

好消息是,debug是一個(gè)使用非常廣泛的模塊,npm 中的許多模塊可能都在用它。第三方模塊的創(chuàng)建者知道(至少,應(yīng)該知道)該模塊的用戶真的不希望默認(rèn)情況下進(jìn)行記錄,因?yàn)樗衅渌娜罩径伎赡軙?huì)變得雜亂無(wú)章。

由于 Express 內(nèi)部使用了 debug 模塊,所以如果你用了 Express 并需要對(duì)其進(jìn)行故障排除,則可以通過(guò)運(yùn)行以下命令打開(kāi)日志:

DEBUG=express:* node your-app-entrypoint.js
查看開(kāi)源 node 模塊是否使用了 debug以及是如何使用的

如果在文檔中沒(méi)有看到關(guān)于是否使用了 debug的內(nèi)容該怎么辦?即便如此,也有可能使用了該模塊,但是你必須進(jìn)行一些挖掘。

我們已經(jīng)知道 Express 文檔中描述了該如何使用它,但是我們假設(shè)它并沒(méi)有記錄在案:

首先,你可以在項(xiàng)目的 GitHub(或其他開(kāi)放源代碼網(wǎng)站)上搜索 package.json,然后查找其中列出的作為依賴項(xiàng)的模塊:

確認(rèn)后,你還需要確認(rèn) 1)實(shí)際正在使用中,以及 2)切換需要使用哪些標(biāo)志。 GitHub 現(xiàn)在具有一項(xiàng)不錯(cuò)的功能,你可以在其中使用搜索欄搜索項(xiàng)目本身。如果我們?cè)?Express 項(xiàng)目中搜索“debug”,則會(huì)發(fā)現(xiàn)以下內(nèi)容:

我們可以看到切換標(biāo)記為 “express”,因此 express:*將為我們提供所有的日志,express:view將為我們提供視圖的日志,等等。

總結(jié)

希望你看到在 node 模塊中實(shí)現(xiàn) debug并為第三方模塊打開(kāi)它是多么容易,以及它可以怎樣幫你清理日志,同時(shí)又為你提供了一種方便的方法來(lái)將其重新打開(kāi)進(jìn)行故障排除。

英文原文地址:https://www.coreycleary.me/using-the-debug-module-to-avoid-polluting-your-application-logs-with-logs-from-node-modules/

作者:Corey Cleary

更多編程相關(guān)知識(shí),可訪問(wèn):編程入門!!

新聞名稱:使用Node.js“debug”模塊避免日志污染應(yīng)用程序日志
當(dāng)前URL:http://chinadenli.net/article38/cjedsp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)軟件開(kāi)發(fā)網(wǎng)站建設(shè)標(biāo)簽優(yōu)化App開(kāi)發(fā)用戶體驗(yàn)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)