如何將 winston log 庫記錄的日誌寫入 mongo DB 資料庫
Winston 非常適合配置不同的日誌目的地。 在我們的小應用程式中,讓我們建立另一個傳輸。 這次我想把日誌儲存到一個數據庫中,MongoDB 簡潔一些。 在 logger.js 檔案上,複製以下程式碼塊。 確保安裝 Winston MongoDB,即 npm install winston-mongodb。
How to use MongoDB
下載並安裝 MongoDB 社群伺服器。
導航到您的環境變數(對於 Windows 使用者),在使用者變數下,選擇路徑 → 編輯 → 新建,新增 C:\Program Files\MongoDB\Server\4.4\bin(4.4 可能因您計算機上安裝的 MongoDB 版本而異).
開啟命令提示符並鍵入 mongo。 這將檢查您是否已成功安裝 MongoDB。 MongoDB shell 版本將列印在您的終端上,這意味著您的安裝成功。
輸入 use logs 建立資料庫日誌。
輸入 db.createCollection("server_logs") 以建立 collection.
在 logger.js 裡插入下列程式碼:
const { createLogger, format, transports } = require('winston'); // Import mongodb require('winston-mongodb'); module.exports = createLogger({ transports:[ // File transport new transports.File({ filename: 'logs/server.log', format:format.combine( format.timestamp({format: 'MMM-DD-YYYY HH:mm:ss'}), format.align(), format.printf(info => `${info.level}: ${[info.timestamp]}: ${info.message}`), )}), // MongoDB transport new transports.MongoDB({ level: 'error', //mongo database connection link db : 'mongodb://localhost:27017/logs', options: { useUnifiedTopology: true }, // A collection to save json formatted logs collection: 'server_logs', format: format.combine( format.timestamp(), // Convert logs to a json format format.json()) })] });
執行 node app.js 以啟動伺服器並訪問以下 URL 以觸發伺服器響應和請求。
http://localhost:3000/
http://localhost:3000/calc
http://localhost:3000/hello
日誌將記錄到 server.log 檔案中。 開啟 server.log 檢視記錄的日誌。
任何錯誤日誌都將記錄在 MongoDB 資料庫中。
輸入 db.server_logs.find() 以檢視日誌。
MongoDB 傳輸採用 JSON 格式。 要將這些日誌儲存在 Mongo 資料庫中,我們需要將它們轉換為 JSON 格式。 這是將記錄插入 Mongo 資料庫集合的唯一格式。
更多Jerry的原創文章,盡在:"汪子熙":