簡體   English   中英

如何在Winston中將錯誤對象記錄到文件而不是控制台?

[英]How do you log an error object to file rather than console in Winston?

Winston中有沒有一種簡單的方法可以將完整的錯誤對象記錄到JSON日志文件中,但是會在控制台上打印一條易於閱讀的消息(err.message)/“錯誤錯誤!” 在這種情況下?

logger.log({
    level: 'error',
    message: 'Error Error!',
    error: err
})

當前,當我運行此代碼時,我收到消息以及打印到控制台的完整錯誤對象。 實際上,我只希望將消息打印到控制台,然后將完整對象顯示在日志文件中。

我也嘗試過:

logger.error('錯誤錯誤',{錯誤:錯誤})

配置

import winston from 'winston'
export const logger = winston.createLogger({
    level: 'info',
    format: winston.format.json(),
    transports: [
        new winston.transports.File({ filename: './logs/error.log', level: 'error' }),
        new winston.transports.File({ filename: './logs/combined.log' })
    ]
})

if (process.env.NODE_ENV !== 'production') {
    logger.add(
        new winston.transports.Console({
            format: winston.format.combine(winston.format.colorize(), winston.format.simple())
        })
    )
}

您當前正在使用winston.format.simple() ,它以${info.level}: ${info.message} JSON.stringify({ ...rest })的格式返回日志${info.level}: ${info.message} JSON.stringify({ ...rest }) (請參見此處https:// www.npmjs.com/package/winston#usage

您需要創建自己的格式來生成所需的輸出:

if (process.env.NODE_ENV !== 'production') {

    const myFormat = winston.format.printf(({ level, message, label, timestamp }) => {
      return `${timestamp} [${label}] ${level}: ${message}`; // modify as needed
    });

    logger.add(
        new winston.transports.Console({
          format: winston.format.combine(
            winston.format.colorize(),
            myFormat
          )
        })
    );
}

暫無
暫無

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

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