提问人:cis 提问时间:10/21/2022 更新时间:11/2/2022 访问量:472
GCP 错误报告中仅显示一些 Winston logger.error 调用
Only some Winston logger.error calls appear in the GCP error reporting
问:
我在 GCP 上的Node.js应用程序中使用 Winston,如下所述: https://cloud.google.com/logging/docs/samples/logging-winston-quickstart 从某种意义上说,这是我在日志资源管理器中看到我期望的日志的工作原理。
我现在希望所有错误都显示在“错误报告”仪表板中(https://console.cloud.google.com/errors?project=...)。
但是,那里只列出了一些错误。我不是 100% 确定哪些错误进入了错误报告仪表板,但我怀疑只有在有适当的错误堆栈跟踪的情况下,调用才会出现在错误仪表板中。logger.error
但这不是我想要的。我希望每当在我的应用程序中触发时,都应该在错误报告仪表板上创建一个错误组 - 无论我传递给的字符串是什么。
我该怎么做?logger.error
logger.error
答:
我只是在java中处理这个问题,关键文档在格式要求中。
引用:
日志记录中包含堆栈跟踪或异常的日志条目,或者格式类似于 ReportedErrorEvent 的日志条目,会在错误报告中生成错误。
这是 java 库中的相关错误修复,当严重性为错误时,他们会向 json 日志消息对象添加一个值为 的字段。@type
type.googleapis.com/google.devtools.clouderrorreporting.v1beta1.ReportedErrorEvent
我不确定在温斯顿这样做的正确方法,但这就是你需要做的。
看起来,在 Winston 中设置并不容易,但可以在消息中添加(一种人为的)堆栈跟踪,例如:@type
format: winston.format.combine(
winston.format((info) => {
if (info.level === 'error') {
Object.assign(info, { message: `${info.message}${(new Error()).stack}` });
}
return info;
})
...
)
这至少对我有用。
评论