javascript - 当调试日志传递时,错误日志不会传递到错误日志文件。为什么会这样?
问题描述
我正在尝试使用Winston创建一个简单的记录器类。我创建了两个名为的记录器Logger
,Error
它们从Logger
.
默认情况下,Logger
该类创建所有日志,al-logs.log
并Error
在扩展时Logger
添加一个额外的传输以在其中创建所有error
日志error-logs.log
。但是里面没有创建日志error-logs.log
。我错过了什么?
这是我所做的:
首先,我创建了这个Logger
类:
class Logger {
constructor(serviceName, label = "") {
this.logger = winston.createLogger({
level: "debug",
format: winston.format.combine(
winston.format.label({ label }),
winston.format.timestamp(),
winston.format.json()
),
defaultMeta: {
service: serviceName
},
transports: [
new winston.transports.File({ filename: 'all-logs.log' })
],
exceptionHandlers: [
new winston.transports.File({ filename: 'exceptions.log' })
]
});
}
}
然后我创建了一个Error
扩展上述类的Logger
类:
class Error extends Logger {
constructor(serviceName, label = "") {
super(serviceName, label);
this.logger.level = "error";
this.logger.transports.push(new winston.transports.File({ filename: 'error-logs.log', level: this.logger.level }))
}
}
然后我创建了一个名为console.error
:
const errorLogger = new Error("test-service");
console.error = (...args) => {
errorLogger.logger.error(args.join(" "))
}
现在,如果我这样做:
console.error("some error")
它不会被记录到error-logs.log
文件中,而只是被记录到all-logs.log
类Logger
中。为什么没有任何东西被记录到error-logs.log
文件中?
解决方案
推荐阅读
- timer - Jmeter 和吞吐量整形计时器 - 在一个脚本中多次
- angular - Angular 10:mat-sidenav 不可见
- sql - 将 SQL 查询转换为 Linq
- outlook - Microsoft Outlook 和附件重新配置
- python - 字符串匹配 Python
- javascript - 无法在 styled.div 组件中访问 React 组件的 props
- html - Visualfoce:日期格式显示为 2020 年 7 月 217 日
- javascript - 接听电话时 webRTC 丢失流
- mysql - MySQL:符合条件的 SELECT 行
- latex - LaTeX - 定义使用某种字体的单词列表