找不到Google Cloud Logging处理程序

Dalethium

当我将记录器指向Google Clouds日志记录处理程序时,我的Google App Engine本地开发服务器返回了classdef not found异常,该如何解决呢?

INFO: Dev App Server is now running
Can't load log handler "com.google.cloud.logging.LoggingHandler"
java.lang.ClassNotFoundException: com.google.cloud.logging.LoggingHandler
java.lang.ClassNotFoundException: com.google.cloud.logging.LoggingHandler
    at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.util.logging.LogManager$5.run(LogManager.java:965)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.util.logging.LogManager.loadLoggerHandlers(LogManager.java:958)
    at java.util.logging.LogManager.addLogger(LogManager.java:1165)
    at java.util.logging.LogManager.demandLogger(LogManager.java:556)
    at java.util.logging.Logger.demandLogger(Logger.java:455)
    at java.util.logging.Logger.getLogger(Logger.java:502)
    at coffee.weneed.chat.CoffeeChat.<clinit>(CoffeeChat.java:37)
    at coffee.weneed.chat.kik.KikServlet.doGet(KikServlet.java:18)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
    at ...

我的logging.properties:

.level = INFO
io.grpc.netty.level=INFO
sun.net.level=INFO

coffee.weneed.chat.CoffeeChat.handlers=com.google.cloud.logging.LoggingHandler,java.util.logging.ConsoleHandler
com.google.cloud.logging.LoggingHandler.log=coffee_chat
com.google.cloud.logging.LoggingHandler.level=INFO

com.google.cloud.logging.LoggingHandler.flushLevel=SEVERE
com.google.cloud.logging.LoggingHandler.formatter=java.util.logging.SimpleFormatter
java.util.logging.SimpleFormatter.format=%3$s: %5$s%6$s

和我的系统属性:

    <system-properties>
    <property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/>
  </system-properties>

我包括将云登录到Maven Deps中,并安装了Cloud Maven插件。我只是不太了解为什么它不能加载该类。

杰莫尔

您必须使用代码在GAE中安装自定义处理程序这被描述为GAE功能请求JDK的另一个已知问题是JDK-6878454:LogManager类的加载与Java EE最佳实践不一致

问题是LogManager使用系统类加载器来定位处理程序,但是您的代码位于Web应用程序类加载器中,该应用程序将是子类加载器。子类加载器可以在父类中找到类,但不能反过来。这是您的原因java.lang.ClassNotFoundException

您可以按照此示例在GAE中设置自定义处理程序设置这使用ServletContextListener来访问正确的类加载器。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章