繁体   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