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

问题描述 投票:1回答:1

我正在升级运行在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 **的排除项添加到依赖于它的外部库,但没有任何改变......

有人已经有同样的问题,你是如何纠正的?

此致,马修

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>
maven tomcat web-applications configuration log4j2
1个回答
0
投票

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

我刚刚更换了库,日志正确写入文件中。

© www.soinside.com 2019 - 2024. All rights reserved.