GAE node.js console.error()未记录为错误日志级别

aho*_*ong 6 javascript logging google-app-engine node.js stackdriver

  • 谷歌应用引擎标准
  • 运行时:nodejs10

由于它看起来很简单,因此我不确定如何将其弄乱。根据App Engine标准文档

console.error('message');
Run Code Online (Sandbox Code Playgroud)

在Stackdriver Logs Viewer中应具有ERROR日志级别。但是,我看到日志级别设置为“任何日志级别”。似乎正确的是,从中stderr可以看到它正在登录logName

logName:  "projects/my-project-name/logs/stderr"  
Run Code Online (Sandbox Code Playgroud)

报价:

要从Node.js应用发出日志项,可以使用 console.log()console.error()函数,它们具有以下日志级别:

  • 发出的项目console.log()具有INFO日志级别。
  • 发出的项目console.error()具有错误日志级别。
  • 内部系统消息具有DEBUG日志级别。

我本来是试图winston与Stackdriver一起使用(使用@ google-cloud / logging-winston)来获取更详细的日志记录级别的,但是现在我什至无法使用basic 和将其记录为INFOERRORconsole.log()console.error()

希望我不必为了使用简单便写疯狂的定制运输console.error()

aho*_*ong 3

tl;dr - 不支持。

更长的答案

所以自从我发布我的问题以来,谷歌似乎已经更新了他们的文档。他们已经澄清,写入stdoutstderr会被收集,但是:

不提供可用于在日志查看器中进行过滤的日志级别

很高兴我有一个答案,那就是:“不,console.log()并且console.error()不会有日志级别。” 这与下一段相矛盾。我可能误读或误解了文档,所以如果是这种情况,请发表评论。

我截取了文档的屏幕截图,指出了我所指的内容,以防他们再次更新: 有关日志记录的 Google App Engine 文档

解决方案

使用 Google 通过 Stackdriver 日志传输支持的日志库之一,如 @darshan-devrai 的答案。如果您不想更改所有console.log()console.error()等,则只需将控制台记录器别名为您选择的记录器(类似于此stackoverflow 答案)。