У меня есть веб-приложение 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 с помощью этого приложения.
Любой ключ, как это исправить?Я что-то упустил?