我們有一個在Google App Engine上運行的Java應用程序,需要處理收集在Google Stackdriver上的錯誤。在GAE上使用Google Stackdriver錯誤報告與java客戶端的數據
我們寫使用的Stackdriver錯誤報告爲以下Maven依賴
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-errorreporting</artifactId>
<version>0.9.3-alpha</version>
</dependency>
獲得API Java Client Library一些代碼,但它似乎不兼容GAE,因爲它抱怨的
Caused by: java.lang.SecurityException: Google App Engine does not support Runtime.addShutdownHook
at com.google.appengine.runtime.Request.process-d6bb19ff7906421f(Request.java)
at java.lang.Runtime.addShutdownHook(Runtime.java:45)
at com.google.common.util.concurrent.MoreExecutors$Application.addShutdownHook(MoreExecutors.java:223)
at com.google.common.util.concurrent.MoreExecutors$Application.addDelayedShutdownHook(MoreExecutors.java:195)
at com.google.common.util.concurrent.MoreExecutors$Application.getExitingScheduledExecutorService(MoreExecutors.java:187)
at com.google.common.util.concurrent.MoreExecutors$Application.getExitingScheduledExecutorService(MoreExecutors.java:219)
at com.google.common.util.concurrent.MoreExecutors.getExitingScheduledExecutorService(MoreExecutors.java:169)
at com.google.api.gax.grpc.InstantiatingExecutorProvider.getExecutor(InstantiatingExecutorProvider.java:51)
at com.google.api.gax.grpc.ChannelAndExecutor.create(ChannelAndExecutor.java:62)
at com.google.api.gax.grpc.ClientSettings.getChannelAndExecutor(ClientSettings.java:81)
at com.google.cloud.errorreporting.spi.v1beta1.ErrorStatsServiceClient.<init>(ErrorStatsServiceClient.java:133)
at com.google.cloud.errorreporting.spi.v1beta1.ErrorStatsServiceClient.create(ErrorStatsServiceClient.java:123)
at com.google.cloud.errorreporting.spi.v1beta1.ErrorStatsServiceClient.create(ErrorStatsServiceClient.java:114)
at com.acme.gcp.errors.App.processErrorStats(App.java:39)
所以問題是:除了通過Google HTTP客戶端從REST API獲取數據之外,是否有任何方法可以消除來自GAE的Google Stackdriver錯誤?
UPDATE
錯誤出現,而不管serviceClient配置嘗試到目前爲止的。
即如此配置的嘗試導致錯誤之一:
ErrorStatsServiceSettings errorStatsServiceSettings = ErrorStatsServiceSettings
.defaultBuilder()
.deleteEventsSettings()
.getRetrySettingsBuilder()
.setTotalTimeout(Duration.standardSeconds(30))
.build();
ErrorStatsServiceClient.create(errorStatsServiceSettings); //error arising here
UPDATE2
有一個在https://github.com/GoogleCloudPlatform/google-cloud-java/issues/1490#issuecomment-283597294
根據此文檔https://cloud.google.com/error-reporting/docs/,您可以在Google應用引擎標準環境和靈活環境中使用Stackdriver錯誤報告。 –
@BravinBalasubramaniam事實上我會說它應該工作......也許這只是設置適當的執行者(對於GAE兼容性)的問題。 –