扩展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中都是单独的条目。当我 not 呼叫super(originalError)
时,在控制台上没有收到任何投诉,但是我仍然很想删除它。
super(originalError)
对象时是否需要Error
?答案 0 :(得分:1)
(忽略日志记录问题)
扩展
super(originalError)
对象时是否需要Error
?