普通的console.warn()显示在严重性为“ERROR”的日志中

问题描述 投票:1回答:2

当我使用console.warn()记录某些内容时,它似乎出现在严重性为“ERROR”的Stackdriver日志中。 Stackdriver错误报告不会显示这些错误,因此它们似乎不会被视为错误。这使得无法过滤日志只显示错误。

阅读Stackdriver记录docs我得到的印象是我不应该使用普通的javascript控制台功能,而是使用Bunyan。那是对的吗?我没有读到任何我不应该阅读的内容。

gcloud google-cloud-stackdriver
2个回答
0
投票

云功能仅区分stdout和stderr。

Writing, Viewing, and Responding to Logs上的文档说“云函数默认包含简单日志记录。写入stdout或stderr的日志将自动出现”。您引用的日志记录文档页面提到了与stdout & stderr being automatic for Cloud Functions相同的内容。

我的解释是,console.warn()将转向stderr,并且一旦出现警告和错误之间的区别就会丢失。我怀疑你会看到同样的console.debug()显示为INFO。当使用stderr时,我在VM中有这种行为,但我认为App Engine没有这个问题。

我认为日志文档页面并不是特别建议Bunyan。它同样适用于Winston,以及客户端库(在这种情况下,身份验证应该正常工作)。

错误报告有一个特定的概念,即什么构成要捕获的“错误”:https://cloud.google.com/error-reporting/docs/formatting-error-messages


0
投票

如果您的日志显示在堆栈驱动程序日志记录中,则错误报告至少能够看到它们。从那里开始,还有一些需求依赖于您正在使用的内容(例如,如果您只是记录JSON,则可能需要使用serviceContext的reportLocation)。

这可能很有用:https://cloud.google.com/error-reporting/docs/formatting-error-messages

另一方面,如果您只是尝试查看严重性错误日志,那么只需使用Logging for severity=ERROR中的高级过滤器就可以完成您正在寻找的内容?

© www.soinside.com 2019 - 2024. All rights reserved.