SEVERE: Исключение org.springframework.web.util.Log4jConfigListener

Получение нижеописанного серьезного исключения при попытке запустить tomcat в Spring Tool Suite:

SEVERE: Exception sending context initialized event to listener instance of class    org.springframework.web.util.Log4jConfigListener
java.lang.IllegalStateException: Cannot set web app root system property when WAR file is not expanded
at    org.springframework.web.util.WebUtils.setWebAppRootSystemProperty(WebUtils.java:143)
at    org.springframework.web.util.Log4jWebConfigurer.initLogging(Log4jWebConfigurer.java:117)
at    org.springframework.web.util.Log4jConfigListener.contextInitialized(Log4jConfigListener.java:45)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4939)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5434)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

Ответы

Ответ 1

Не используйте Log4jConfigListener в WAR, который не является расширенным; мы, вероятно, нужно сделать это еще более ясным.

Есть только два преимущества, которые Log4jWebConfigurer дает вам: - обновляет конфигурацию Log4J при изменении конфигурационного файла Log4J; - позволяет использовать пути файла журнала относительно корня web appliciton.

Оба не применимы, когда WAR не расширяется, поэтому нет смысла в используя Log4jWebConfigurer в таком сценарии. Просто полагайтесь на Log4J по умолчанию инициализация из файла log4j.properties в корневой части пути к классам.

Кстати, вы могли заметить, что Log4jConfigListener закомментирован в Petclinic and Countries 'web.xml по соответствующей причине: возможность развертывания ВОЙНЫ, которые не расширены, и работать без хлопот в JBoss (у которого есть собственное специальное использование Log4J).

Юрген