log4j2 не входит в веб-приложение, развернутое на Tomcat - PullRequest
0 голосов
/ 29 августа 2018

Я обновляю версию 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 и заменил его новым 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>

1 Ответ

0 голосов
/ 12 сентября 2018

Я наконец нашел свою проблему, это было связано с другой библиотекой (infinispan-embeded), которая переопределяла классы Log4j, такие как LogManager. Я загружал эти классы вместо тех, что были в библиотеках log4j, и они были в более старой версии, чем я хотел.

Я только что заменил библиотеку, и логи правильно записаны в файл.

...