Настройте одно веб-приложение Tomcat, чтобы игнорировать Tomcat/libs log4j jar из-за конфликта
У меня есть веб-приложение на Java, использующее Spring Boot, которое работает нормально, и я использую SLF4J (с log4j2). Это все работает - и выходит из системы в правильные файлы - в моем локальном экземпляре Tomcat, у которого нет конфликтующих Jars в пути к классам.
Однако при развертывании в производственной среде, кажется, существует существующий файл jar log4j в каталоге Tomcat/lib (который превосходит мой собственный jar log4j2 в каталоге WEB-INF/lib). Я получаю некоторые ошибки при запуске, которые, кажется, не связаны с моей собственной конфигурацией, так как количество регистраторов / свойств не совпадает.
У меня только ограниченный контроль над производственной средой Tomcat, поэтому в идеале я хотел бы иметь возможность ограничить, какие библиотеки включены в путь к классам только для моего веб-приложения, без изменения конфигурации для других, развернутых в том же экземпляре Tomcat.
Поэтому мой вопрос таков: возможно ли исключить предоставленный jar log4j только из моего приложения и вместо этого использовать поставляемый jar log4j2?
Заранее спасибо!
Ошибки при запуске
2016-03-07 15:34:29,346 localhost-startStop-10 ERROR Error processing element appender ([configuration: null]): CLASS_NOT_FOUND
2016-03-07 15:34:29,347 localhost-startStop-10 ERROR Error processing element appender ([configuration: null]): CLASS_NOT_FOUND
2016-03-07 15:34:29,347 localhost-startStop-10 ERROR Error processing element appender ([configuration: null]): CLASS_NOT_FOUND
2016-03-07 15:34:29,348 localhost-startStop-10 ERROR Error processing element appender ([configuration: null]): CLASS_NOT_FOUND
2016-03-07 15:34:29,349 localhost-startStop-10 ERROR property contains an invalid element or attribute "value"
2016-03-07 15:34:29,349 localhost-startStop-10 ERROR Unknown object "property" of type org.apache.logging.log4j.core.config.Property is ignored.
2016-03-07 15:34:29,350 localhost-startStop-10 ERROR Unknown object "logger" of type org.apache.logging.log4j.core.config.LoggerConfig is ignored.
2016-03-07 15:34:29,350 localhost-startStop-10 ERROR Unknown object "logger" of type org.apache.logging.log4j.core.config.LoggerConfig is ignored.
2016-03-07 15:34:29,351 localhost-startStop-10 ERROR Unknown object "logger" of type org.apache.logging.log4j.core.config.LoggerConfig is ignored.
2016-03-07 15:34:29,352 localhost-startStop-10 ERROR Unknown object "logger" of type org.apache.logging.log4j.core.config.LoggerConfig is ignored.
2016-03-07 15:34:29,352 localhost-startStop-10 ERROR Unknown object "logger" of type org.apache.logging.log4j.core.config.LoggerConfig is ignored.
2016-03-07 15:34:29,353 localhost-startStop-10 ERROR Unknown object "logger" of type org.apache.logging.log4j.core.config.LoggerConfig is ignored.
2016-03-07 15:34:29,353 localhost-startStop-10 ERROR Unknown object "root" of type org.apache.logging.log4j.core.config.LoggerConfig is ignored.
2016-03-07 15:34:29,354 localhost-startStop-10 ERROR Unknown object "logger" of type org.apache.logging.log4j.core.config.LoggerConfig is ignored.
файл конфигурации log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration name="PSPCC" monitorInterval="30">
<Properties>
<Property name="LOG_PATH">logs</Property>
<Property name="LOG_PATTERN">%clr{%d{yyyy-MM-dd HH:mm:ss.SSS}}{faint} %clr{%5p} %clr{${sys:PID}}{magenta} %clr{--}{faint} %clr{[%15.15t]}{faint} %clr{%-40.40c{1.}}{cyan} %clr{:}{faint} %m%n%wEx</Property>
</Properties>
<Appenders>
<Console name="Console" target="SYSTEM_OUT" follow="true">
<PatternLayout pattern="${LOG_PATTERN}" />
</Console>
<RollingFile name="File" fileName="${LOG_PATH}/pspcc.log"
filePattern="${LOG_PATH}/pspcc-${date:yyyy-MM-dd}.log" append="true">
<Policies>
<SizeBasedTriggeringPolicy size="1 MB" />
</Policies>
<DefaultRolloverStrategy max="3"/>
<PatternLayout pattern="${LOG_PATTERN}" />
</RollingFile>
</Appenders>
<Loggers>
<Logger name="org.hibernate" level="warn" />
<Logger name="org.apache.coyote.http11.Http11NioProtocol" level="warn" />
<Logger name="org.apache.tomcat.util.net.NioSelectorPool" level="warn" />
<Logger name="org.apache.catalina.startup.DigesterFactory" level="error" />
<Logger name="org.springframework.security.saml" level="debug" />
<Logger name="org.springframework.security" level="info" />
<Root level="warn">
<AppenderRef ref="Console"/>
<AppenderRef ref="File"/>
</Root>
</Loggers>
</Configuration>