【问题标题】:How to info message and error message stored separate file using winston log file?如何使用 winston 日志文件将信息消息和错误消息存储在单独的文件中?
【发布时间】:2019-07-16 04:09:24
【问题描述】:

我尝试使用 winston 在日志文件中记录信息和错误。如果有任何信息存储在 info.log 中。如果发生未捕获的异常错误,则仅存储 error.log 文件。但如果发生常见错误,则存储两个文件(info .log 和 error.log)如何修复它,任何人都可以提供一些解决方案。

winston.js

const winston = require('winston');
require('winston-mongodb');
require('express-async-errors');

const winstonLogger = function () {

    winston.add(new winston.transports.Console({
        format: winston.format.combine(
        winston.format.simple(),
        winston.format.timestamp(),
        winston.format.prettyPrint(),
        winston.format.colorize()
            ),
            handleExceptions: true
        }));
    // Info Log messages to file
    winston.add(new winston.transports.File({
        filename: 'logs/info.log',
        level: 'info'
    }));
    // Error Log Messages file
    winston.add(new winston.transports.File({
        filename: 'logs/error.log',
        level: 'error',
        handleExceptions: true,
    }));
};

module.exports = winstonLogger;

我希望将信息消息存储在 info.log 文件中,并将错误消息存储在 error.log 文件中。使用 winston 将未捕获的异常错误存储在单独的文件中

【问题讨论】:

    标签: node.js winston


    【解决方案1】:

    Winston 日志记录基于您指定的级别。低于该级别的所有日志都转到指定文件。

    日志记录级别 0 到 5(最高到最低):

    0: error
    1: warn
    2: info
    3: verbose
    4: debug
    5: silly
    

    以下是来自 winston 文档的示例代码:

    const logger = winston.createLogger({
      level: 'info',
      format: winston.format.json(),
      defaultMeta: { service: 'user-service' },
      transports: [
        //
        // - Write to all logs with level `info` and below to `combined.log` 
        // - Write all logs error (and below) to `error.log`.
        //
        new winston.transports.File({ filename: 'error.log', level: 'error' }),
        new winston.transports.File({ filename: 'combined.log' })
      ]
    });
    

    【讨论】:

    • 我试过但是错误消息存储在两个文件中我只想存储error.log
    • 是的,因为error是最高级别,它会将所有级别记录到error.log中。
    • 可以尝试使用自定义级别并记录最低自定义级别的错误。
    • const myCustomLevels = { 级别: { foo: 0, bar: 1, baz: 2, foobar: 3 } }; const customLevelLogger = winston.createLogger({ levels: myCustomLevels.levels });
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-23
    • 2018-05-22
    • 1970-01-01
    • 2020-01-02
    • 2015-01-06
    相关资源
    最近更新 更多