1. 程式人生 > 其它 >如何將 winston log 庫記錄的日誌寫入 mongo DB 資料庫

如何將 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的原創文章,盡在:"汪子熙":