Переход на Struts 2.5.16 вызывает проблему с log4

Я переношу существующее приложение Struts с 2.3.34 на 2.5.16. Я обновил свой проект всеми библиотеками из минимального дистрибутива, необходимыми для обновления. При запуске Сервера (Tomcat 8.5) я вижу в консоли ОШИБКУ: ОШИБКА StatusLogger Log4j2 не может найти реализацию ведения журнала. Добавьте log4j-core в путь к классам. Использование SimpleLogger для входа в консоль ... Похоже, в нем отсутствует библиотека log4j-core? Пожалуйста, дайте мне знать, если у кого-нибудь возникла подобная проблема или я что-то упустил.

Спасибо!

Кто они"? Как выглядит твой помпон? Без подробностей помочь действительно сложно.

Dave Newton 21.04.2018 23:51

Привет, Дэйв, мы не используем Maven. Я имел в виду, что в загруженном пакете min lib для версии 2.5.16 отсутствует упомянутый выше файл jar - mirror.olnevhost.net/pub/apache/struts/2.5.16/…

Nikata 23.04.2018 15:54
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
2
2 378
2

Ответы 2

Последняя версия struts 2 (V2.5.16) использует файл jar log4j2. Вы можете обратиться к здесь для получения более подробной информации. Если в вашем веб-приложении уже есть log4j2, попробуйте обновить его до Последняя версия.

Я столкнулся с этой проблемой. Поскольку struts 2.5.16 использует log4j2, мы должны добавить его в наш путь к классу. Как только мы добавим это в наш проект, я не получу логи struts, так как у нас есть файл log4j.xml.

Итак, я начал перенос журналов приложений и журналов гибернации, но в какой-то момент он не работал.

Простое решение - вместо переноса всего проекта на log4j2 используйте jar-адаптер log4j-to-slf4j, который заставит ваш модуль struts работать с существующей реализацией slf4j. Я сделал эти изменения pom:

<dependency>
        <!--Defining not to use the log4j-api -->
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-core</artifactId>
        <version>${struts.ver}</version>
        <exclusions>
            <exclusion>
                <artifactId>org.apache.commons</artifactId>
                <groupId>commons-lang3</groupId>
            </exclusion>
            <exclusion>
                <artifactId>log4j-api</artifactId>
                <groupId>org.apache.logging.log4j</groupId>
            </exclusion>
        </exclusions>
    </dependency>

    <dependency> <!-- Redirecting from log4j2 to slf4j -->
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-to-slf4j</artifactId>
        <version>2.10.0</version>
    </dependency>

Обратитесь к «банке адаптера log4j-to-slf4j» в эта страница

Другие вопросы по теме