1

我有一个使用 Spring Boot 运行良好的 Java webapp,并且我一直在使用 SLF4J(带有 log4j2)。这一切都有效 - 并注销到正确的文件 - 在我的本地 Tomcat 实例中,该实例在类路径中没有冲突的 Jars。

但是,当部署到生产环境中时,Tomcat/lib 目录中似乎有一个现有的 log4j jar 文件(这胜过我自己在 WEB-INF/lib 目录中的 log4j2 jar 文件)。我在启动时遇到一些错误,这些错误似乎与我自己的配置无关,因为记录器/属性的数量不匹配。

我对生产 Tomcat 环境的控制有限,所以理想情况下,我希望能够单独限制哪些库包含在我的 webapp的类路径中,而无需更改部署在同一 Tomcat 实例中的其他库的配置。

因此,我的问题是:是否可以仅从我的应用程序中排除提供的 log4j jar,而使用我提供的 log4j2 jar?

提前致谢!

启动时出错

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

0 回答 0