当我使用console.warn()
记录某些内容时,它似乎出现在严重性为“ERROR”的Stackdriver日志中。 Stackdriver错误报告不会显示这些错误,因此它们似乎不会被视为错误。这使得无法过滤日志只显示错误。
阅读Stackdriver记录docs我得到的印象是我不应该使用普通的javascript控制台功能,而是使用Bunyan。那是对的吗?我没有读到任何我不应该阅读的内容。
云功能仅区分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
如果您的日志显示在堆栈驱动程序日志记录中,则错误报告至少能够看到它们。从那里开始,还有一些需求依赖于您正在使用的内容(例如,如果您只是记录JSON,则可能需要使用serviceContext的reportLocation)。
这可能很有用:https://cloud.google.com/error-reporting/docs/formatting-error-messages
另一方面,如果您只是尝试查看严重性错误日志,那么只需使用Logging for severity=ERROR
中的高级过滤器就可以完成您正在寻找的内容?