Express Stackdriver Node.js日志记录未显示

Express Stackdriver Node.js日志记录未显示,express,winston,stackdriver,google-cloud-stackdriver,Express,Winston,Stackdriver,Google Cloud Stackdriver,我有一个Node.js应用程序,在Docker容器中运行,并使用Stackdriver记录事件 它是一个Node.Js应用程序,与Express.Js和Winston一起运行,用于记录和使用StackDriverTransport 当我在本地运行这个容器时,所有内容都被正确记录并显示在云控制台中。当我在GCE VM中使用相同的环境变量运行相同的容器时,日志不会显示 你所说的本地到底是什么意思?您是在云Shell上运行容器还是在实例上运行它?请记住,如果您创建了一个容器或实例,该容器或实例必须执行

我有一个Node.js应用程序,在Docker容器中运行,并使用Stackdriver记录事件

它是一个Node.Js应用程序,与Express.Js和Winston一起运行,用于记录和使用StackDriverTransport


当我在本地运行这个容器时,所有内容都被正确记录并显示在云控制台中。当我在GCE VM中使用相同的环境变量运行相同的容器时,日志不会显示

你所说的本地到底是什么意思?您是在云Shell上运行容器还是在实例上运行它?请记住,如果您创建了一个容器或实例,该容器或实例必须执行一些需要特权(如Stackdriver日志客户端库)的操作并运行它,那么如果该实例没有设置该角色/特权,它将无法工作

Yu提到您使用相同的环境变量,我认为其中一个env变量指向您的json密钥文件。实例上的该路径中是否存在密钥文件

从中可以看出,您需要指定服务帐户的密钥文件位置:

  const winston = require('winston');
  const Stackdriver = require('@google-cloud/logging-winston');
  winston.add(Stackdriver, {
    projectId: 'your-project-id',
    keyFilename: '/path/to/keyfile.json'
  });

您是否检查过这是否是使用具有日志角色的服务帐户的密钥定义的?

本地,我指的是在我的笔记本电脑上运行它,可以在容器内部或外部运行。在GCE VM实例中运行容器时会发生故障。事实上,我发现即使是日志winston示例也不起作用,而Google的云日志库却起作用。我调试了winston的日志记录,看起来我是否提供凭据并不重要。该库通过调用metadataservice来检查它在哪个环境上运行,并发现它在GCE上运行。服务帐户具有日志角色,可以与日志库配合使用。还没有,但查看github时,出现问题的并非只有我一个人:。当他们将更新推送到库时,我将重试。