Ведение журнала не работает в ContextListener при завершении работы приложения - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть веб-приложение Java с одним ServletContextListener, который создает и использует Log4j Logger как при запуске, так и при завершении работы приложения.

public class MyServletContextListener implements ServletContextListener {

  @Override
  public void contextInitialized(ServletContextEvent servletContextEvent) {
    getLogger().info("My context is initialized");
  }

  @Override
  public void contextDestroyed(ServletContextEvent servletContextEvent) {
    getLogger().info("My context is destroyed");
  }

  private Logger getLogger() {
     return LogManager.getLogger();
  }
}

Файл конфигурации Log4j определен в web.xml, также яиспользуя log4j-web jar, предоставленный в выпуске log4j.

Во время запуска сообщение журнала печатается правильно, однако при завершении работы мой файл конфигурации не может быть найден, поэтому регистратор не может быть настроен и отображает это сообщение об ошибке:

2018-12-11 16:56:44,722 localhost-startStop-2 ERROR No Log4j 2 configuration file found. Using default configuration (logging only errors to the console), or user programmatically provided configurations. Set system property 'log4j2.debug' to show Log4j 2 internal initialization logging. See https://logging.apache.org/log4j/2.x/manual/configuration.html for instructions on how to configure Log4j 2

Я создал образец проекта для воспроизведения этой проблемы:

https://github.com/katanagari7c1/tomcat-shutdown-test

Его можно воспроизвести, просто запустив / остановив Tomcat с помощью этого приложения.

Любой ключ, как это исправить?Я что-то упустил?

...