log4j2 不登录部署在 tomcat 上的 webapplication

log4j2 does not log in webapplication deployed on tomcat

我正在为 Web 应用程序 运行ning 升级 log4j 版本 Tomcat 8。我正在从版本 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 并将其替换为文件夹 src/main/resources 中的新 log4j2.xml 文件(在我的 log4j2 文件内容下方找到)。

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

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

是否有人遇到过同样的问题,您是如何解决的?

此致, 马修

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>

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

刚换了库,日志写到文件里了。