Обработчик ведения журнала Google Cloud Not Found - PullRequest
0 голосов
/ 21 апреля 2019

Мой локальный сервер разработки движка приложений Google возвращает исключение classdef, когда я указываю регистратору обработчик ведения журнала в облаке Google. Как это исправить?

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 ...

my 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. Я просто не могу понять, почему он не загружает класс.

1 Ответ

0 голосов
/ 23 апреля 2019

Вы должны использовать код для установки пользовательского обработчика в GAE . Это описано как запрос функции для GAE . Это также известная проблема с JDK: JDK-6878454: загрузка класса LogManager несовместима с рекомендациями Java EE .

Проблема в том, что LogManager использует загрузчик системного класса для поиска обработчиков, но ваш код находится в загрузчике классов веб-приложения, который будет загрузчиком дочерних классов. Загрузчик дочерних классов может найти классы в родительском, но не наоборот. Это причина вашего java.lang.ClassNotFoundException.

Вы можете следовать этому примеру, настраивая пользовательскую настройку обработчика в GAE . При этом используется ServletContextListener для получения доступа к правильному загрузчику классов.

...