」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 使用 Errsole 為 Node.js 應用程式建立自訂記錄器

使用 Errsole 為 Node.js 應用程式建立自訂記錄器

發佈於2024-08-26
瀏覽:270

每個強大的日誌系統都包含三個關鍵組件:收集器、儲存和視覺化器。 Winston 和 Pino 等流行的 Node.js 日誌記錄模組僅充當日誌收集器。然而,Errsole 提供了完整的日誌記錄解決方案,其中包括:

  1. 日誌儲存: 將日誌保存在檔案或應用程式的資料庫中。

  2. 內建儀表板:使用內建儀表板檢視、過濾和搜尋日誌。

  3. 警報: 接收嚴重錯誤的即時通知。

安裝 Errsole 及其相依性

要使用 Errsole,您需要安裝 Errsole 模組以及基於您選擇的資料庫的儲存模組。以下是不同儲存選項的安裝步驟:

文件儲存:

npm install errsole errsole-sqlite

MongoDB:

npm install errsole errsole-mongodb

MySQL:

npm install errsole errsole-mysql

PostgreSQL:

npm install errsole errsole-postgres

建立自訂記錄器文件

在現實生活中的 Node.js 專案中,您將擁有多個檔案。要在專案的每個檔案中使用 Errsole Logger,請建立一個 logger.js 檔案並在其中初始化 Errsole:

const errsole = require('errsole');
const ErrsoleSQLite = require('errsole-sqlite');

errsole.initialize({
  storage: new ErrsoleSQLite('/tmp/logs.sqlite')
});

module.exports = errsole;

現在,您可以在專案中的每個檔案中匯入 logger.js 檔案並使用它來記錄日誌:

const logger = require('./logger');

// Example usage
logger.info('This is an informational message.');
logger.error('This is an error message.');

了解 Errsole 中的日誌級別

Errsole Logger 函數採用與 console.log 相同的參數。您可以提供一個或多個以逗號分隔的字串、物件或變數。此外,您可以使用 meta 函數將元資料附加到日誌訊息中。此元資料可以是任何上下文訊息,例如 HTTP 請求或資料庫查詢結果。

logger.meta({ reqBody: req.body, queryResults: results }).error(err);
logger.meta({ email: req.body.email }).log('User logged in');

Errsole Logger提供了五個日誌等級的功能:alert、error、warn、info、debug。

log / info: 用於記錄訊息或訊息。

logger.log('Logging a message');
logger.log('Multiple', 'arguments', 'are supported');
logger.log('Logging with a variable:', var1);
logger.log(new Error('An error occurred'));
logger.log('Logging with an error object:', errorObject);

alert: 記錄訊息並向配置的管道發送通知,例如電子郵件或 Slack。

logger.alert('Alert! Something critical happened');

錯誤:專門用來記錄錯誤。

logger.error(new Error('An error occurred'));

warn: 記錄警告訊息。

logger.warn('This is a warning message');

debug: 記錄除錯訊息,通常用於開發過程中的故障排除。

logger.debug('Debugging information');

何時在程式碼中使用 logger.alert

每當您的 Node.js 應用程式崩潰時,Errsole 都會向您的開發團隊發送即時通知。此通知包括錯誤訊息、應用程式名稱、環境名稱和伺服器名稱。

Creating a Custom Logger for a Node.js Application using Errsole

若要將嚴重錯誤新增至此通知列表,請在程式碼中使用 logger.alert。但是,請避免過度使用它,以防止通知淹沒您的開發人員。將其用於支付失敗或資料庫查詢失敗等嚴重錯誤。將錯誤物件放入警報函數中,並在元函數中新增所有上下文資訊。這使開發人員可以輕鬆調試關鍵錯誤。

logger.meta({ reqBody: req.body, queryResults: results }).alert(err);

結論

將完整的日誌記錄解決方案合併到您的 Node.js 應用程式中可確保強大的日誌管理和高效的偵錯。 Errsole 提供日誌儲存、內建儀表板和即時通知,使其成為完整的日誌記錄工具。

要開始使用 Errsole,請造訪 https://github.com/errsole/errsole.js。

版本聲明 本文轉載於:https://dev.to/errsole/creating-a-custom-logger-for-a-nodejs-application-using-errsole-6bo?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • 如何處理 MySQL 預存程序中的「錯誤 1329:無資料 - 取得零行」?
    如何處理 MySQL 預存程序中的「錯誤 1329:無資料 - 取得零行」?
    在預存程序中無資料警告:「錯誤1329:取得、選擇或處理零行」在資料庫程式設計中,預存程序通常用於封裝複雜的操作並確保資料完整性。然而,有時這些過程可能會遇到錯誤或產生意外的警告。一個常見問題是「錯誤 1329:無資料 - 提取、選擇或處理零行」訊息。 當預存程序未明確處理沒有傳回資料的情況時,通常...
    程式設計 發佈於2024-11-07
  • 你真的了解Git嗎?
    你真的了解Git嗎?
    本部落格中的圖片來自 Scott Chacon、Ben Straub 的「Pro Git」 在本部落格中,您將了解有關您在程式設計中使用的 Git 中的一些日常功能的各種精彩事實! 開發人員很容易盲目使用工具而不知道它們在幕後是如何工作的。雖然這種抽像是為了更好,但了解事物如何運作有時可能是經驗...
    程式設計 發佈於2024-11-07
  • 濃縮咖啡;出發時間到了
    濃縮咖啡;出發時間到了
    在過去的兩周里,我用 Go 重寫了我的基於 Rust 的 Java 構建工具,事情進展得更快。 Espresso 運作速度更快且更便攜。 Espresso 最近也能夠編譯和打包它的第一個項目,即我的另一個項目 Kindling。 我希望能得到任何關於 Espresso 的回饋。有很多功能缺失,例如...
    程式設計 發佈於2024-11-07
  • 為什麼我的 JSFiddle 無法運作?
    為什麼我的 JSFiddle 無法運作?
    調試無功能的 JSFiddle嘗試在 JSFiddle 中執行簡約程式碼片段時,使用者可能會遇到意外的功能缺失。此問題通常是由於 JavaScript 設定中的疏忽而引起的。若要解決此問題,請依照下列步驟操作:在 JavaScript 設定中找到「載入類型」下拉清單。 選擇「無換行 - 底部」。 ...
    程式設計 發佈於2024-11-07
  • GenAI Git 提交
    GenAI Git 提交
    產生 git 提交訊息很快就成為開發人員的經典 GenAI 應用程式。 為了解決這個問題,我們將製作一個 GenAIScript 腳本。 此腳本可作為常規 Node.js 自動化腳本並使用 runPrompt 向 LLM 發出呼叫並要求使用者確認產生的文字。 ? 解釋腳本 腳本...
    程式設計 發佈於2024-11-07
  • 什麼是 Webhook 以及如何有效使用它們
    什麼是 Webhook 以及如何有效使用它們
    Webhooks 是集成不同系统并实时发送通知的强大工具。它们允许一个应用程序在事件发生时自动通知另一个应用程序,而无需像传统 API 那样不断发出请求来检查是否有新内容。在这篇文章中,我们将了解它们的工作原理、如何配置它们,并且我们将探索使用 Webhook.site 工具的实际示例,该工具有助...
    程式設計 發佈於2024-11-07
  • 建立 JS 函數以刪除給定字串中的空格。 (使用核心js而不是內建的修剪功能。)
    建立 JS 函數以刪除給定字串中的空格。 (使用核心js而不是內建的修剪功能。)
    const trim = (string) => { let strArr = string.split(""); let trimedStr = []; strArr.forEach((item) => { if (item !== " ") { ...
    程式設計 發佈於2024-11-07
  • GlobalErrorHandler:捕捉從 ErrorBoundary 手中落下的錯誤!
    GlobalErrorHandler:捕捉從 ErrorBoundary 手中落下的錯誤!
    ErrorBoundary 是一個出色的工具,可以捕捉 React 元件拋出的錯誤。您可以根據錯誤本身的性質和位置提供自訂錯誤訊息。但並非所有拋出的錯誤都由 ErrorBoundary 處理!你用這些做什麼? 當考慮非同步錯誤和從 React 外部拋出的錯誤時,ErrorBoundary 不夠。為...
    程式設計 發佈於2024-11-07
  • 如何在Visual Studio 2008中設定可執行檔圖示?
    如何在Visual Studio 2008中設定可執行檔圖示?
    在Visual Studio 2008 中設定可執行檔圖示雖然提供的參考主要針對Visual Studio 2010,但在Visual Studio 中設定可執行檔圖示的原則Studio 2008 基本上都適用。但是,需要記住一些具體的注意事項:使用.ico 檔案您必須為可執行圖示使用.ico 檔案...
    程式設計 發佈於2024-11-07
  • 導入大型 SQL 檔案:為什麼要使用 MySQL 控制台而不是 phpMyAdmin?
    導入大型 SQL 檔案:為什麼要使用 MySQL 控制台而不是 phpMyAdmin?
    在 phpMyAdmin 中匯入大型 SQL 檔案:另一種方法嘗試直接透過 phpMyAdmin 匯入大量 SQL 檔案可能會遇到限制。不過,有一個可靠的替代方法,就是利用 MySQL 控制台。 根據提供的建議,透​​過 MySQL 控制台匯入 SQL 檔案可以繞過 phpMyAdmin 中遇到的問...
    程式設計 發佈於2024-11-07
  • 使用 JSON-LD 提升部落格的 SEO:我如何使用結構化資料添加豐富的結果
    使用 JSON-LD 提升部落格的 SEO:我如何使用結構化資料添加豐富的結果
    Introduction A few years ago in 2022, I attended SCaLE 19x. For those who are not aware, SCaLE is an acronym which stands for Southern Califo...
    程式設計 發佈於2024-11-07
  • create-next-app 使用此套件驗證您的應用程式名稱
    create-next-app 使用此套件驗證您的應用程式名稱
    在本文中,我們分析 create-next-app 如何驗證您的專案名稱。 validate: (name) => { const validation = validateNpmName(basename(resolve(name))) if (validation.valid) { ...
    程式設計 發佈於2024-11-07
  • 幕後反應:到底發生了什麼事?
    幕後反應:到底發生了什麼事?
    React 長期以來一直是首選的 JavaScript 函式庫,並且很容易成為世界上最受歡迎的函式庫之一。此外,隨著 Next.js 和 Remix 等流行框架建立在 React 之上,以及使用 React-Native 進行行動開發的能力,這個函式庫不會很快消失。然而,這樣做的問題是,大多數初學者...
    程式設計 發佈於2024-11-07
  • 使用 Tinder Unblur 個人資料
    使用 Tinder Unblur 個人資料
    Tinder 取消模糊程式碼說明 以下 JavaScript 程式碼是一個腳本,旨在對「喜歡你」部分中的 Tinder 照片進行取消模糊處理。它的工作原理是從 Tinder 的 API 獲取預告圖像並動態更新 DOM 以用清晰的圖像替換模糊的圖像。 async function ...
    程式設計 發佈於2024-11-07
  • 如何確保網站安全:最佳實踐和見解
    如何確保網站安全:最佳實踐和見解
    在當今的數位時代,確保網站的安全至關重要。隨著網路威脅變得越來越複雜,保護您的網站免受潛在漏洞的影響至關重要。以下是增強網站安全性的一些關鍵做法,以及特定網站 HouseOfParty.com 如何在其利基市場中舉例說明安全做法。 使用 HTTPS 描述:HTTPS(安全超文本傳輸協定)會對使用者...
    程式設計 發佈於2024-11-07

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3