我有一个Node.js应用程序,在Docker容器内运行并使用Stackdriver记录事件。
这是一个Node.Js应用程序,与Express.js和Winston一起运行,用于记录和使用StackDriverTransport。
当我在本地运行此容器时,所有内容都会正确记录并显示在云控制台中。当我在GCE VM中运行具有相同环境变量的同一容器时,日志不会显示。
答案 0 :(得分:1)
你在当地究竟是什么意思?您是否在Cloud Shell上运行容器而在实例上运行它?请记住,如果您创建了一个必须执行某些需要权限的容器或实例(例如Stackdriver日志记录客户端库)并运行它,那么如果该实例没有设置该角色/权限的service account它不起作用。
Yu提到您使用相同的环境变量,我将其中一个env vars指向您的json密钥文件。密钥文件是否存在于实例上的该路径中?
从Winston documentation看起来您需要指定服务帐户的密钥文件位置:
const winston = require('winston');
const Stackdriver = require('@google-cloud/logging-winston');
winston.add(Stackdriver, {
projectId: 'your-project-id',
keyFilename: '/path/to/keyfile.json'
});
您是否检查过这是否是使用具有日志记录角色的服务帐户的密钥定义的?