javascript - 扩展 Error 对象时是否需要 super(originalError)?
问题描述
扩展Error
对象时,我对调用super(originalError)
导致打印到 STDOUT 的正常堆栈跟踪感到沮丧。我希望我的日志以 JSON 格式进行格式化,以便它们可以被 logstash/Kibana 使用。Kibana 中包含\n
的堆栈跟踪被拆分为多个条目,因为它显然并不真正知道如何处理该输入。我可以在登录之前通过一些修改来避免这种情况
function logError(errorDetails, stack) {
logger.error({ errorDetails, stack: sanitizeLineBreaks(stack) } // removes `\n`
}
但是,我正在实现的错误对象看起来像:
class ServerError extends Error {
constructor(originalError, errorDetails, stack) {
super(originalError) // <- this is the problem
Error.captureStackTrace(this, ServerError)
// stuff ...
logError(originalError, stack)
}
}
super(originalError)
但是,使用换行符调用打印到控制台;这会导致丑陋的条目,其中跟踪的每一行都是 Kibana GUI 中的单独条目。当我不打电话时,我没有在控制台中收到任何投诉super(originalError)
,但我仍然犹豫是否要删除它。
super(originalError)
扩展对象时是否需要Error
?
解决方案
(忽略您的日志记录问题)
super(originalError)
扩展对象时是否需要Error
?
推荐阅读
- ios - 使用 Alamofire 和 Swift 的 Realm
- postgresql - 如何使用列表作为 Vertx JDBC 客户端的 SQL 查询的参数源?
- c# - Xdocument 解析文件并读取值
- julia - 在向量的参数向量上调度时出现 MethodError
- r - 如何获得唯一 ID 的因子级别
- java - 一个类已由 Java 运行时的更新版本编译
- python - 如何修改python假期库中的观察值
- python - Python文件上传使用S3签名?
- python - 使用 Selenium 单击第二个 img
- excel - Excel / SharedStrings 的排序算法