javascript - Winston - 显示错误堆栈跟踪对象和正常格式的消息
问题描述
我有以下记录器文件-
const { createLogger, format, transports } = require('winston');
const { combine, prettyPrint, timestamp, printf, simple } = format;
// set default log level.
const logLevel = 'info';
const errorStackFormat = format((info) => {
if (info instanceof Error) {
return Object.assign({}, info, {
stack: info.stack,
message: info.message
});
}
return info;
});
var logger = createLogger({
level: logLevel,
levels: {
error: 0,
warn: 1,
info: 2,
http: 3,
verbose: 4,
debug: 5,
silly: 6
},
format: combine(
prettyPrint(),
timestamp({
format: 'DD-MM-YYYY hh:mm:ss A'
}),
errorStackFormat(),
simple(),
printf((info) => {
return `${info.timestamp} - ${info.level}: ${info.message}`;
})
),
transports: [new transports.Console()]
});
module.exports = logger;
如果我传递这样的正常消息 - logger.info('Normal message')
,我得到的输出为14-10-2020 12:58:01 AM - info: Normal message
,但如果我尝试传递这样的错误对象 - logger.info(new Error('error')) ,我得到的输出为14-10-2020 01:02:23 AM - info: error
。如果我在该方法中放置了一个控制台日志,那么errorStackFormat
我在该方法中得到了正确stack trace object
的结果,那么为什么它没有得到控制台呢?如果我将simple()
调用移到下面printf
,那么我会正确获得堆栈跟踪。printf
如果出现非错误和堆栈跟踪消息,如果出现错误,我应该进行哪些更改才能获取正常格式的消息?
解决方案
推荐阅读
- shell - 这是否意味着易受攻击的功能如果我通过程序执行 shell 代码
- java - 使用 Spring Data JpaRepositories 通过 ElementCollections 中的值查询实体
- python - 选择多个标准
- shell - 无法扩展 cURL 命令中使用的变量
- yaml - Bitbucket 管道配置问题
- python - 如何在等待 API 返回值时等待并显示进度信息
- xaml - 如何在选择项目后让自动完成框变大
- java - 如何使用 Spring Boot / Keycloak 对后端到后端进行身份验证
- excel - 如何将“分数”字符转换为小数?
- java - 如何在 Spring JPA 中使用用户输入连接到数据库