Не найден файл конфигурации 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.
- создайте папку и сохраните в ней файл logj4.
- Write нажмите в созданной папке и перейдите к пути сборки.
- нажмите на Добавить папку
- выбираем созданную папку.
- нажмите 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>