Nano Hash - криптовалюты, майнинг, программирование

log4j2.xml не найден, но он находится в пути к классам в моем проекте Eclipse

У меня есть проект Eclipse Java, давайте назовем его «unittest», и я пробую log4j2 + SLF4J, он, кажется, нормально регистрируется, но игнорирует мой log4j2.xml. Я явно вижу: ОШИБКА StatusLogger Не найден файл конфигурации log4j2. Использование конфигурации по умолчанию: запись в консоль только ошибок.

Структура файла проекта — это где «test» — это исходная папка для проекта.

unittest/
   test/
       log4j2.xml
       com/blah/blah/etc...

Я положил log4j2.xml в корень папки test/. Выходная папка, определенная для проекта, — это каталог unittets/bin. И я проверяю, что log4j2.xml создается в каталоге bin при создании моего проекта. Я не использую Maven, пока только Eclipse.

Вот мой тестовый код:

public class LogManagerConfigTest {

    private static final org.slf4j.Logger slf4jLogger = LoggerFactory.getLogger(LogManagerConfigTest.class);

    @Test
    public void loggerTest() {
        //for troubleshooting No log4j2 configuration file found error only
        System.out.println("Looking for configuration on classpath:");
        URL resource = ClassLoader.getSystemResource("log4j2.xml"); 
        System.out.println("found"+String.valueOf(resource));

        slf4jLogger.trace("Trace message Test {}",1);
        slf4jLogger.trace("Trace message Test {}",2);

        slf4jLogger.debug("Debug message Test {}",1);
        slf4jLogger.debug("Debug message Test {}",2);

        slf4jLogger.info("Info message Test {}",1);
        slf4jLogger.info("Info message Test {}",2);

        slf4jLogger.error("Error message Test {}",1);
        slf4jLogger.error("Error message Test {}",2);

    }

}

Содержимое log4j2.xml я пока взял из документации log4j, позже планирую изменить...

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
  <Appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </Console>
  </Appenders>
  <Loggers>
    <Logger name="sandbox" level="trace" additivity="false">
      <AppenderRef ref="Console"/>
    </Logger>
    <Root level="error">
      <AppenderRef ref="Console"/>
    </Root>
  </Loggers>
</Configuration>

Запустив это как тест JUnit в Eclipse, используя тот же путь к классам, что и мой проект Eclipse, вы получите следующий результат:

ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console. Looking for configuration on classpath:
found file:/C:/work/workspace/unittests/bin/log4j2.xml
12:39:43.969 [main] ERROR sandbox.LogManagerConfigTest - Error message Test 1 
12:39:43.971 [main] ERROR sandbox.LogManagerConfigTest - Error message Test 2

Поэтому я не уверен, что мне не хватает. Подобные вопросы, похоже, не имеют прямого ответа, что решает мою проблему.


Ответы:


1

Проблема решилась сама собой и ушла. Я пытался сделать «Проект»> «Очистить» и очистить проект unittest без видимого эффекта. Затем попробовал обходной путь, создав второй файл xml в той же папке проекта «log4j2-test.xml», как только я добавил это, все заработало. Теперь, если я удалю log4j2-test.xml, он, кажется, читает из log4j2.xml нормально, но я больше ничего не менял. Так немного странно, но больше не проблема.

06.01.2016

2

Maven: убедитесь, что ваш pom.xml включает в себя все xml-файлы в вашем каталоге ресурсов, как показано ниже:

<resources>
    <resource>
    <directory>src/main/resources</directory>
        <includes>
            <include>**/*.xml</include>
             ... any other includes ....
        </includes>
    </resource>
</resources>`

Затем очистите (mvn clean) и соберите (mvn package) Eclipse останется после этого!

11.05.2020
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..