Не найден файл конфигурации log4j2. Использование конфигурации по умолчанию: регистрация только ошибок в консоли

$ java -Dlog4j.configuration=file:///path/to/your/log4j2.xml -jar /path/to/your/jar_file.jar

написано на консоли, вы получаете

ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.

но также похоже, что файл конфигурации был найден и не был проанализирован:

    log4j:WARN Continuable parsing error 2 and column 31
    log4j:WARN Document root element "Configuration", must match DOCTYPE root "null".
    log4j:WARN Continuable parsing error 2 and column 31
    log4j:WARN Document is invalid: no grammar found.
    log4j:ERROR DOM element is - not a <log4j:configuration> element.
    log4j:WARN No appenders could be found for logger (kafka.utils.VerifiableProperties).
    log4j:WARN Please initialize the log4j system properly.
    log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

9 ответов


Я некоторое время занимался этой проблемой. Я изменил все, как описано в этом посте и даже подумал, что произошла ошибка. В этом случае убедитесь, что вы очистили проект при изменении настроек.xml или .файл свойств. В среде Eclipse. Выберите Project - > Clean


Если у вас нет состояния log4j-1.2.jar на вашем пути к классам как Ренко указывает в своем комментарии, вы увидите только файл конфигурации log4j2 не найден.

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

например, если у вас есть log4j2.файл yaml, который log4j2 не удается обработать, потому что, например,вы не настроил парсер YAML для вашего проекта, или ваша конфигурация просто неверна. Вы столкнетесь с файл конфигурации log4j2 не найден сообщение, без дополнительной информации. Это так, даже если у вас есть действительный log4j2.xml-файл, так как log4j2 будет только попытка обработать первый найденный файл конфигурации.

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

-Dlog4j.configurationFile=

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

обновление

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

-Dorg.apache.logging.log4j.simplelog.StatusLogger.level=<level>

Я использую hive jdbc в проекте java maven и имею те же проблемы.

мой метод-добавить log4j2.xml-файл под src / main/java / resources

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class MyClassName {
    private static final Logger LOG = LoggerFactory.getLogger(MyClassName.class);
}

log4j2.XML

<?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="<your_package_name>.<your_class_name>" level="debug">
        <AppenderRef ref="Console"/>
        </Logger>
        <Root level="WARN">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
</Configuration>

в моем случае я использую файл log4j2 json log4j2.json в classpath моего проекта Gradle и я получил ту же ошибку.

решением здесь было добавить зависимость для обработки JSON в мои зависимости gradle.

compile group:"com.fasterxml.jackson.core", name:"jackson-core", version:'2.8.4'
compile group:"com.fasterxml.jackson.core", name:"jackson-databind", version:'2.8.4'
compile group:"com.fasterxml.jackson.core", name:"jackson-annotations", version:'2.8.4'

см. также документация log4j2:

поддержка JSON использует процессор данных Jackson для анализа JSON файлы. Эти зависимости необходимо добавить в проект, который хочет использовать JSON для конфигурация:


Я получаю эту ошибку, потому что файл log4j2 был удален из моей папки src

просто добавьте xml-файл в папку src

<Appenders>
    <Console name="Console" target="SYSTEM_OUT">
        <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L - %msg%n" />
    </Console>

    <RollingFile name="RollingFile" filename="logs/B2CATA-hybrid.log"
        filepattern="${logPath}/%d{yyyyMMddHHmmss}-fargo.log">
        <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L - %msg%n" />
        <Policies>
            <SizeBasedTriggeringPolicy size="100 MB" />
        </Policies>
        <DefaultRolloverStrategy max="20" />
    </RollingFile>

</Appenders>
<Loggers>
   <Logger name="com.pragiti." level="trace" />
    <Root level="info">
        <AppenderRef ref="Console" />
        <AppenderRef ref="RollingFile" />
    </Root>
</Loggers>


продукты я проверяю,

1) Проверьте, что нет версий oder log4j.

mvn dependency:tree | grep log
[INFO] +- com.prayagupd:log-service:jar:1.0:compile
[INFO] +- org.apache.logging.log4j:log4j-api:jar:2.6.2:compile
[INFO] +- org.apache.logging.log4j:log4j-core:jar:2.6.2:compile
[INFO] |  \- commons-logging:commons-logging:jar:1.1.1:compile

2) Убедитесь, что я log4j2.JSON правильно, что сделано с -Dlog4j.configurationFile=???

val logConfig: PropertiesConfiguration = new PropertiesConfiguration("application.properties")
System.setProperty("log4j.configurationFile", logConfig.getString("log4j.config.file"))
println("log4j.configurationFile :: " + System.getProperty("log4j.configurationFile"))

или

Configurator.initialize(null, logConfig.getString("log4j.config.file"));

3) Самая смешная проверка для парсера для log4j2.формат JSON. Спасибо команде log4j за то, что не предоставили парсер в API.

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.4.0</version>
</dependency>

Это может вызвать исключение, если не удается найти парсер json

[Fatal Error] log4j2.json:1:1: Content is not allowed in prolog.

Я решил эту проблему, настроив путь сборки. Вот шаги, которым я следовал:: в Eclipse.

  1. создайте папку и сохраните в ней файл logj4.
  2. Write нажмите в созданной папке и перейдите к пути сборки.
  3. нажмите на Добавить папку
  4. выбираем созданную папку.
  5. нажмите ok и применить и закрыть.

теперь вы должны быть в состоянии запустить


У меня была такая же проблема, но я заметила, что у меня нет log4j2.xml в моем проекте после чтения в сети об этой проблеме, поэтому я скопировал связанный код в блокнот и вернул файл блокнота в xml и добавил в свой проект под ресурсы папки. это работает на меня.

<?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>
<Root level="DEBUG">
  <AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>