有效的日誌記錄對於應用程序開發至關重要。它提供了對應用程序行為的見解,並簡化了調試。本教程演示瞭如何使用Pino Logger在Node.js應用程序中實現日誌記錄,這是一個流行的選擇,以其性能和靈活性而聞名。
Pino允許全面的日誌記錄,包括有關應用程序流的詳細信息以及將日誌保存到分開文件的能力。它廣泛的GitHub社區進一步強調了其可靠性。
本指南涵蓋:
最後,您將能夠使用最佳實踐和Pino在Node.js應用程序中實現強大的登錄。
在進行之前,請確保您有:
建議使用像郵遞員這樣的工具進行API端點測試。
此步驟涉及使用Express.js和Mongoose創建基本的Node.js Crud應用程序。這種方法可確保在現實的應用程序上下文中實現記錄功能。
有關CRUD應用程序設置,請參閱有關使用Mongoose和Mongodb Atlas執行CRUD操作的教程。完成後,您將擁有一個node.js應用程序,其中包含創建,讀取,更新和刪除路由。
在代碼更改時安裝nodemon
以進行自動服務器重新啟動:
NPM安裝-G-力nodemon
-g
標誌在全球安裝, --force
處理潛在的衝突。
安裝必要的依賴項:Pino,Express-Pino-Logger和Pino-Pretty:
NPM安裝Pino Express-logger Pino-Pinty
創建具有各種日誌級別(警告,錯誤,信息等)的Pino Logger服務。此服務將使用Node.js中間件集成到您的應用程序中。
創建services
目錄:
MKDIR服務
使用以下代碼創建loggerService.js
內部services
:
const pino = require('pino'); 模塊exports = pino({prettyprint:true});
這將創建一個具有相當印刷輸出的基本記錄器。以後的步驟將涵蓋進一步的配置。
接下來,在您的server.js
文件中,導入Logger服務和express-pino-logger
:
const expresspinologger = require('express-pino-logger'); const logger = require('./ services/loggerService');
使用您的Logger服務配置express-pino-logger
:
// ... const loggermiddleware = ExpressPinologger({ 記錄器:記錄器, 自動:是的, }); app.use(loggeriDdleware); // ...
autoLogging: true
包括日誌中的JSON響應。
在您的路線處理程序(例如, foodRoutes.js
)中,導入並使用記錄器:
const logger = require('../ services/loggerService'); // ... app.get(“/food”,async(請求,響應)=> { logger.info('獲取路線訪問'); // ... }); // ...
重新啟動服務器( nodemon server.js
)並測試API端點。日誌輸出將出現在您的終端中。
此步驟側重於自定義Logger服務並增強日誌可讀性。
在loggerService.js
中定義自定義日誌級別:
// ... const Levels = { http:10, 調試:20, 信息:30, 警告:40, 錯誤:50, 致命:60, }; // ...
更新loggerService.js
中的pino
配置:
模塊。Exports= pino({{ 漂亮的印刷:是的, Custalevels:級別, useonlycustomlevels:是的, 級別:'http', });
使用自定義級別測試(例如, logger.http(...)
)。設置autoLogging: false
如果不需要JSON響應,則在server.js
中進行false。
在loggerService.js
中增強日誌格式:
模塊。Exports= pino({{ Custalevels:級別, useonlycustomlevels:是的, 級別:'http', PrettyPrint:{ 著色:是的, Levelfirst:是的, TranslateTime:“ Yyyy-DD-MM,H:MM:SS TT', },, });
再次測試以查看改進的日誌輸出。
要將日誌寫入文件,請在loggerService.js
中修改pino
配置:
模塊。Exports= pino({{ Custalevels:級別, useonlycustomlevels:是的, 級別:'http', PrettyPrint:{ 著色:是的, Levelfirst:是的, TranslateTime:“ Yyyy-DD-MM,H:MM:SS TT', },, },pino.destination(`$ {__ dirname}/logger.log`));
測試您的API;現在,日誌將寫入services
目錄中的logger.log
。
本教程提供了在Node.js應用程序中實現Pino登錄的綜合指南。記住最佳實踐:上下文信息,明確的目的和可讀的格式是有效記錄的關鍵。探索用於高級配置選項的官方Pino文檔。
以上是如何使用pino-logger在node.js應用程序中實現登錄的詳細內容。更多資訊請關注PHP中文網其他相關文章!