我在OSX上使用Java Stackdriver Logging Client库。
在我使用已安装和初始化的gcloud sdk开发ubuntu之前。在我的Mac上,gcloud已安装但尚未初始化。
首先我要设置我的环境变量:
Systemutil.createEnv("GOOGLE_CLOUD_PROJECT", "projectid");
Systemutil.createEnv("GOOGLE_APPLICATION_CREDENTIALS, "path/to/json/serviceaccount.json")
之后我想实例化我的日志记录客户端:
Logging logging = LoggingOptions.defaultInstance().service();
然后我得到了这个堆栈跟踪:
Exception in thread "main" com.google.cloud.logging.LoggingException: java.lang.NullPointerException
at com.google.cloud.logging.LoggingOptions$DefaultLoggingRpcFactory.create(LoggingOptions.java:62)
at com.google.cloud.logging.LoggingOptions$DefaultLoggingRpcFactory.create(LoggingOptions.java:54)
at com.google.cloud.ServiceOptions.rpc(ServiceOptions.java:399)
at com.google.cloud.logging.LoggingImpl.<init>(LoggingImpl.java:96)
at com.google.cloud.logging.LoggingOptions$DefaultLoggingFactory.create(LoggingOptions.java:43)
at com.google.cloud.logging.LoggingOptions$DefaultLoggingFactory.create(LoggingOptions.java:38)
at com.google.cloud.ServiceOptions.service(ServiceOptions.java:391)
at LucyLog.StackdriverLogging.write(StackdriverLogging.java:30)
at LucyLog.Lucy.write_Log(Lucy.java:85)
at LucyLog.Lucy.main(Lucy.java:81)
Caused by: java.io.IOException: java.lang.NullPointerException
at com.google.cloud.logging.spi.DefaultLoggingRpc.<init>(DefaultLoggingRpc.java:144)
at com.google.cloud.logging.LoggingOptions$DefaultLoggingRpcFactory.create(LoggingOptions.java:60)
... 9 more
Caused by: java.lang.NullPointerException
at com.google.cloud.logging.spi.DefaultLoggingRpc.<init>(DefaultLoggingRpc.java:122)
... 10 more
在我的Ubuntu上,实例化工作正常,那么gcloud的init是在后台进行的,我现在必须在Mac上的Java代码中进行操作?
备注:设置cloud_project env正在运行 - 如果我对该行进行评论,我将得到另一个例外。如果我评论设置凭据的行,则异常不会更改(可能在身份验证之前发生错误?)
答案 0 :(得分:0)
我还在Stackdriver社区论坛中发布了我的问题 - 他们给了我一些线索,我可能需要更新我的客户端lib版本:link
我正在使用版本1.17 now- poml.xml依赖:
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-logging</artifactId>
<version>1.17.0</version>
</dependency>
现在一切正常。