簡體   English   中英

Google App Engine Java 11 無法實例化 com.google.cloud.logging.LoggingHandler

[英]Google App Engine Java 11 Unable to instantiate the com.google.cloud.logging.LoggingHandler

我目前正在測試向 Java 11 的遷移,但我遇到了日志記錄組件的問題。 在 Java 8 中,一切都正確記錄,具有適當的日志級別並將日志聚合到請求中。 然而,在移動到 Java 11 之后,情況就不再如此了。

我閱讀了以下指南: https://cloud.google.com/appengine/docs/standard/java11/writing-application-logs https://cloud.google.com/logging/docs/setup/java#the_javautillogging_handler我對我們的代碼進行了必要的更改,現在服務器在初始化時崩潰了。 我收到以下錯誤:

java.lang.AbstractMethodError: Receiver class com.google.api.gax.grpc.InstantiatingGrpcChannelProvider does not define or inherit an implementation of the resolved method 'abstract com.google.api.gax.rpc.TransportChannelProvider withExecutor(java.util.concurrent .Executor)' 接口 com.google.api.gax.rpc.TransportChannelProvider。 at com.google.api.gax.rpc.ClientContext.create(ClientContext.java:140) at com.google.api.gax.rpc.ClientContext.create(ClientContext.java:123) at com.google.cloud.logging .spi.v2.GrpcLoggingRpc.(GrpcLoggingRpc.java:132) at com.google.cloud.logging.LoggingOptions$DefaultLoggingRpcFactory.create(LoggingOptions.java:61) at com.google.cloud.logging.LoggingOptions$DefaultLoggingRpcFactory.create( LoggingOptions.java:55) at com.google.cloud.ServiceOptions.getRpc(ServiceOptions.java:561) at com.google.cloud.logging.LoggingOptions.getLoggingRpcV2(LoggingOptions.java:129) at com.google.cloud.logging .LoggingImpl.(LoggingImpl.java:109) 在 com.google.cloud.logging.LoggingOptions$DefaultLoggingFactory.create(LoggingOptions.java:46) 在 com.google.cloud.logging.LoggingOptions$DefaultLog ggingFactory.create(LoggingOptions.java:41) at com.google.cloud.ServiceOptions.getService(ServiceOptions.java:541) at com.google.cloud.logging.LoggingHandler.getLogging(LoggingHandler.java:362) at com.google .cloud.logging.LoggingHandler.(LoggingHandler.java:195) at com.google.cloud.logging.LoggingHandler.(LoggingHandler.java:151) at com.google.cloud.logging.LoggingHandler.(LoggingHandler.java:120) at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at java.base/jdk.internal.reflect. DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在 java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490) 在 8821 3246945888.base/java.lang.Class.newInstance(Class.java:584) 在 java.logging/java.util.logging.LogManager.createLoggerHandlers(LogManager.java:1000) 在 java:1000) 在 java:1000) java:1000 LogManager$4.run(LogManager.java:970) 在 java.logging/java.util.logging.LogManager$4.run(LogManager.java:966) 在 java.base/java.security.AccessController.doPrivileged(本機方法) java.logging/java.util.logging.LogManager.loadLoggerHandlers(LogManager.java:966) 在 java.logging/java.util.logging.LogManager.addLogger(LogManager.java:1199) 在 886.vautil.logging5888.java:1199 logging.LogManager.demandLogger(LogManager.java:525) 在 java.logging/java.util.logging.LogManager.demandLogger(LogManager.java:515) 在 java.logging/java.util.logging.Logger.demandLogger(Logger. java:654) 在 java.logging/java.util.logging.Logger.getLog ger(Logger.java:717) 在 java.logging/java.util.logging.Logger.getLogger(Logger.java:701) 在 com.altairix.comm.adf.root.log.DefaultLogger.(DefaultLogger3848888) ) at com.altairix.comm.adf.root.log.LoggerFactory.(LoggerFactory.java:7) at com.altairix.adf.Adf_Server.(Adf_Server.java:234) at com.altairix.adf.root.servlet. AdfServlet.(AdfServlet.java:98) at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at java .base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490) at java.base/java.lang.Class .newInstance( Class.java:584) at org.eclipse.jetty.server.handler.ContextHandler$Context.createInstance(ContextHandler.java:2372) at org.eclipse.jetty.servlet.ServletContextHandler$Context.createServlet(ServletContextHandler.java:1166) at org.eclipse.jetty.servlet.ServletHolder.newInstance(ServletHolder.java:1207) at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:588) at org.eclipse.jetty.servlet.ServletHolder.getServlet (ServletHolder.java:472) at org.eclipse.jetty.servlet.ServletHolder.ensureInstance(ServletHolder.java:767) at org.eclipse.jetty.servlet.ServletHolder.prepare(ServletHolder.java:752) at org.eclipse. jetty.servlet.ServletHandler.doHandle(ServletHandler.java:582)在org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)在org.eclipse.jetty(ScopedHandler.java:143) curityHandler.java:577) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127) at org .eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) at org.eclipse.jetty.server.handler.ContextHandler .doScope(ContextHandler.java:1061) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97 ) 在 org.eclipse.jetty.server.Server.handle(Server.java:499) 在 org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311) 在 org.78381764.server.88381764 onFillable(HttpConnection.java: 257) at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635) at org.eclipse.jetty. util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555) 在 java.base/java.lang.Thread.run(Thread.java:834)

我們的代碼最后調用的是:com.altairix.comm.adf.root.log.DefaultLogger.(DefaultLogger.java:26),它是:

logger = java.util.logging.Logger.getLogger(DefaultLogger.class.getName());

我不確定我的 logging.properties 文件是否正確,但它是從上述指南之一復制的

.level = INFO
io.grpc.netty.level=INFO
sun.net.level=INFO
com.altairix.adf.root.log.ServerLogger.handlers=com.google.cloud.logging.LoggingHandler
com.altairix.comm.adf.root.log.DefaultLogger.handlers=com.google.cloud.logging.LoggingHandler
com.google.cloud.logging.LoggingHandler.log=custom_log
com.google.cloud.logging.LoggingHandler.level=FINEST
default : ERROR
com.google.cloud.logging.LoggingHandler.flushLevel=ERROR
com.google.cloud.logging.LoggingHandler.resourceType=container
com.google.cloud.logging.LoggingHandler.formatter=java.util.logging.SimpleFormatter
java.util.logging.SimpleFormatter.format=%3$s: %5$s%6$s

我能夠通過向記錄器添加處理程序來解決此問題:

import com.google.cloud.logging.LoggingHandler;
...
logger.addHandler(new LoggingHandler());

並刪除對 logging.properties 文件的引用,但我不認為這是預期用途,並且在嘗試使用 logging.properties 文件時似乎存在錯誤

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM