Express Stackdriver Node.js日志记录未显示
我有一个Node.js应用程序,在Docker容器中运行,并使用Stackdriver记录事件 它是一个Node.Js应用程序,与Express.Js和Winston一起运行,用于记录和使用StackDriverTransportExpress 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上运行容器还是在实例上运行它?请记住,如果您创建了一个容器或实例,该容器或实例必须执行
当我在本地运行这个容器时,所有内容都被正确记录并显示在云控制台中。当我在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时,出现问题的并非只有我一个人:。当他们将更新推送到库时,我将重试。