【问题标题】:Winston is only logging .info errors and doesn't log error to file or mongodbWinston 仅记录 .info 错误,不会将错误记录到文件或 mongodb
【发布时间】:2021-10-10 22:19:28
【问题描述】:

我使用 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)
}

【问题讨论】:

  • 谁能帮帮我?
  • winstonwinston-mongodb npms 的版本是多少?

标签: javascript node.js express mongoose winston


【解决方案1】:

winston“控制台传输”是同步的,但是写入 mongo 或文件的进程是异步的。在这种情况下,您可以使用 winston 函数回调。试试这个:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-03
    • 2013-11-10
    • 1970-01-01
    • 2011-05-12
    • 1970-01-01
    • 2020-02-28
    • 2011-09-17
    相关资源
    最近更新 更多