4

我正在使用 npm @google-cloud/logging-winston 将应用程序日志事件发送到谷歌堆栈驱动程序日志接收器。下面是我的代码片段,它在我的本地 macbook 中运行良好。当我尝试在 GCE 实例(谷歌云上的 ubuntu 16.10 图像计算实例)中运行它时,它不会将日志事件发送到日志接收器,并且我无法在谷歌云日志仪表板上看到它。任何帮助在这里表示赞赏

        ///// code start here
            const winston = require('winston');
        const Logger = winston.Logger;
        const Console = winston.transports.Console;

        const LoggingWinston = require('@google-cloud/logging-winston');

        // Instantiates a Winston Stackdriver Logging client
        const loggingWinston = LoggingWinston({
        projectId: 'myproject-id',
        keyFilename: 'mykey.json',
        level: 'info',// log at 'warn' and above ,


        labels: { "env": "poc" }
        ,
        logName: "poc-gcl.log"
        });

        // Create a Winston logger that streams to Stackdriver Logging
        // Logs will be written to: "projects/YOUR_PROJECT_ID/logs/winston_log"
        const logger = new Logger({
        level: 'info', // log at 'info' and above
        transports: [
            // Log to the console
            new Console(),
            // And log to Stackdriver Logging
            loggingWinston
        ]



        });

        // Writes some log entries
        logger.info('Node Winston logger initialized.Transport GCL Stakdriver logging', 
        { type: "poc", server: "test" });


        //code ends here.

在此先感谢-jag

4

2 回答 2

4

有同样的问题,最后是因为我看错了地方:

  • 从 Google Cloud Platform 外部(例如您的计算机)登录时,如果您没有提供要登录的资源,则库默认将日志路由到“全局”资源。

  • 在 Google Cloud Platform 中执行相同操作时,可以在“GCE VM 实例”类别中找到日志。

于 2018-06-11T22:28:20.713 回答
1

也许不是答案,但它可能会有所帮助。我在将本地日志发送到 Stackdriver 时也遇到了问题,最后意识到我的服务帐户没有正确的权限。特别是“日志作者”角色。

https://cloud.google.com/iam/docs/granting-roles-to-service-accounts#granting_access_to_a_service_account_for_a_resource

于 2018-03-10T00:22:59.743 回答