Javascript 如何在Winston中将错误对象记录到文件而不是控制台?
Winston中是否有一种简单的方法可以将完整的错误对象记录到JSON日志文件中,但在控制台(err.message)/“error error!”在这种情况下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
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
)
})
);
}
非常感谢,非常感谢@没问题,非常欢迎。如果解决方案有效,请“接受”答案:)