簡體   English   中英

Winston 只是 logging.info 錯誤,不會將錯誤記錄到文件或 mongodb

[英]Winston is only logging .info errors and doesn't log error to file or mongodb

我在后端使用 express-mongoose,在記錄器中使用 winston。 問題是 winston 只記錄信息消息而不記錄錯誤 server.log 中的日志在此處輸入圖像描述

錯誤消息只記錄在控制台上,但既不在文件中也不在 mongodb 在此處輸入圖像描述

記錄器代碼

const { createLogger, format, transports } = require('winston');

// Import mongodb
require('winston-mongodb');

module.exports = createLogger({

transports:[
//Console transport
    new transports.Console(),

// 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/logs',
        options: {
            useUnifiedTopology: true
        },
        // A collection to save json formatted logs
        collection: 'edushare_logs',
        format: format.combine(
        format.timestamp(),
        // Convert logs to a json format
        format.json())
    })]
});

我通過未定義 jwt 創建了一個錯誤。代碼

const logger = require("./utils/logger")
if (!config.get("jwtPrivateKey")){
    logger.error("FATAL ERROR!! JWT is not defined!")
    process.exit(1)
}

winston“控制台傳輸”是同步的,但是寫入 mongo 或文件的過程是異步的。 在這種情況下,您可以使用 winston function 回調。 嘗試這個:

const logger = require("./utils/logger")
if (!config.get("jwtPrivateKey")) {
    logger.error("FATAL ERROR!! JWT is not defined!", () => {
        exit(1);
    });
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM