log4j2无法登录部署在tomcat上的Web应用程序

时间:2018-08-29 08:24:24

标签: maven tomcat web-applications configuration log4j2

我正在为运行在Tomcat 8上的Web应用程序升级log4j的版本。我正在从1.2.12版本升级到最新的2.11.1。

该应用程序正在使用Maven。因此,我在应用程序pom.xml中添加了以下依赖关系(版本在父pom中进行管理):

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
</dependency>

我删除了旧的配置文件log4j.properties,并用文件夹log4j2.xml中的新src/main/resources文件替换了(在我的log4j2文件内容下面找到)。

当我直接运行main函数时,日志已正确写入控制台和文件中。但是,当我在Tomcat上部署应用程序并运行该应用程序时,不会写入任何日志。

我检查了我的应用程序WAR,两个库都位于WEB-INF/lib文件夹中。 我还通过将log4j-1 **中的排除项添加到对它有依赖性的外部库中进行了测试,但是没有任何变化...

有人已经遇到了同样的问题吗,您如何解决呢?

关于, 马修(Matthieu)

PS:我的log4j2.xml文件的内容:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status=WARN strict="true">
    <Properties>
        <Property name="pattern">%d [%t] (%F:%L) %x %-5p [%c{1}] %m%n</Property>
        <Property name="filePath">C:/temp/logs/my_app/my_app.log</Property>
    </Properties>

    <Appenders>
        <Appender type="Console" name="STDOUT">
            <Layout type="PatternLayout" pattern="${pattern}"/>
        </Appender>
        <Appender type="RollingFile" name="FILE" fileName="${filePath}" filePattern="${filePath}.%i">
            <Layout type="PatternLayout" pattern="${pattern}"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="500KB"/>
            </Policies>
            <DefaultRolloverStrategy max="1"/>
        </Appender>
    </Appenders>

    <Loggers>
        <Logger name="my.package.debug" level="DEBUG" additivity="false">
            <AppenderRef ref="STDOUT"/>
            <AppenderRef ref="FILE"/>
        </Logger>
        <Root level="WARN">
            <AppenderRef ref="STDOUT"/>
            <AppenderRef ref="FILE"/>
        </Root>
    </Loggers>
</Configuration>

1 个答案:

答案 0 :(得分:0)

我终于找到了我的问题,这是由于另一个库(infinispan嵌入)正在重新定义Log4j类,例如LogManager。我正在加载这些类,而不是在log4j库中加载那些类,并且它们的版本比我想要的版本还要旧。

我刚刚替换了库,并且日志已正确写入文件中。