ОШИБКА StatusLogger Не найден файл конфигурации log4j2. При обновлении Struts версии 2.5.12

В соответствии с требованиями и в целях безопасности я обновляю проект Struts. До Struts была версия 2.3.24, а теперь я обновляю ее до 2.5.12. Я загрузил все необходимые jar-файлы Struts и применил их к проекту, но получаю следующую ошибку:

ОШИБКА StatusLogger Не найден файл конфигурации log4j2. Использование конфигурации по умолчанию: запись в консоль только ошибок. Задайте для системного свойства org.apache.logging.log4j.simplelog.StatusLogger.level значение TRACE, чтобы отображалось внутреннее ведение журнала инициализации Log4j2.

Но в своем проекте я не использую логгер. Я добавил все файлы jar зависимостей, и я не использую Maven, но добавил связанные библиотеки в папку lib. Любые предложения, пожалуйста.


person shivanand sb    schedule 12.08.2017    source источник


Ответы (2)


Фреймворк Struts использует вторую версию фреймворка log4j.

Переход с 2.3 на 2.5

Имейте в виду, что фреймворк теперь использует Log4j2 в качестве основного уровня ведения журнала, существующий старый уровень ведения журнала устарел и скоро будет удален. Log4j2 поддерживает множество различных реализаций ведения журнала, пожалуйста, проверьте документацию для получения более подробной информации.

Файл log4j2.xml требуется для начальной загрузки инфраструктуры ведения журнала. Но его нет в пути к классам. Его также нет в структуре Struts.


Вы должны найти log4j2.xml, то есть из приложения struts-showcase или прочитать шаг 4 в этом руководстве Как создать веб-приложение Struts 2

Шаг 4 - Добавьте ведение журнала

Чтобы увидеть, что происходит внутри, в примере приложения для этого руководства используется log4j2. Вам нужно будет добавить в pom узел зависимости для log4j2:

Узел зависимости pom.xml log4j

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

Использование как log4j-core, так и log4j-api позволяет использовать последнюю версию Log4j2 без конфликтов с версией, предоставляемой фреймворком. Настройте конфигурацию log4j2.xml в папке src / main / resources, которая содержит следующие

log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
    <Appenders>
        <Console name="STDOUT" target="SYSTEM_OUT">
            <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
        </Console>
    </Appenders>
    <Loggers>
        <Logger name="com.opensymphony.xwork2" level="debug"/>
        <Logger name="org.apache.struts2" level="debug"/>
        <Root level="warn">
            <AppenderRef ref="STDOUT"/>
        </Root>
    </Loggers>
</Configuration>

Обратите внимание, что в приведенной выше конфигурации log4j2 в качестве цели журнала указывается консоль.

person Roman C    schedule 12.08.2017
comment
Сэр, я не использую Maven, и я добавил библиотеки как для log4j-core 2.8.2, так и для log4j-api 2.8.2, но он все еще не работает. - person shivanand sb; 14.08.2017
comment
Maven необходим для управления зависимостями. Вы никогда не узнаете, какая библиотека требуется, если не разрешите зависимости с помощью Maven или любого другого инструмента. - person Roman C; 14.08.2017

No log4j2 configuration file found означает, что log4j2.xml файла конфигурации нет в вашем пути к классам.

Убедитесь, что jar вашего проекта содержит log4j confuguration file или нет.

В противном случае вы можете установить путь к файлу конфигурации log4j как системное свойство в вашем скрипте сборки.

<sysproperty key="log4j.configurationFile" value="file:///${basedir}/src/log4j2.xml" />

Проверьте https://logging.apache.org/log4j/2.x/manual/configuration.html для конфигурации log4j.

person Agustus    schedule 12.08.2017
comment
Но я не использую maven, и у меня нет файла конфигурации log4j2. - person shivanand sb; 12.08.2017