Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Winston中将错误对象记录到文件而不是控制台?_Javascript_Node.js_Winston - Fatal编程技术网

Javascript 如何在Winston中将错误对象记录到文件而不是控制台?

Javascript 如何在Winston中将错误对象记录到文件而不是控制台?,javascript,node.js,winston,Javascript,Node.js,Winston,Winston中是否有一种简单的方法可以将完整的错误对象记录到JSON日志文件中,但在控制台(err.message)/“error error!”在这种情况下 logger.log({ level: 'error', message: 'Error Error!', error: err }) 目前,当我运行这段代码时,我得到消息加上控制台上打印的完整错误对象。实际上,我只希望将消息打印到控制台,然后在日志文件中显示完整的对象 我还尝试: error('error e

Winston中是否有一种简单的方法可以将完整的错误对象记录到JSON日志文件中,但在控制台(err.message)/“error error!”在这种情况下

logger.log({
    level: 'error',
    message: 'Error Error!',
    error: err
})
目前,当我运行这段代码时,我得到消息加上控制台上打印的完整错误对象。实际上,我只希望将消息打印到控制台,然后在日志文件中显示完整的对象

我还尝试:

error('error error',{error:err})

配置

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})
的格式返回日志(请参见此处)

您需要创建自己的格式以生成所需的输出:

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
          )
        })
    );
}

非常感谢,非常感谢@没问题,非常欢迎。如果解决方案有效,请“接受”答案:)