Как привязать log4j.properties к конкретному исполняемому файлу в INTELIJ IDEA в JAVA?

У меня log4j.properties находится в той же папке что и класс с методом main, но при запуске работа логгера не зависит от log4j.properties. Помещение его в корневой src проекта не меняет ситуацию.

Буду рад если поможете.

Вот содержимое моего log4j.properties (замена TRACE на ALL или OFF не приводит к изменениям в выводе):

# Root logger option
log4j.rootLogger=TRACE, stdout

# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n


Ответы (1 шт):

Автор решения: Roman Konoval

Можно передать путь к файлу в системном свойстве log4j2.configurationFile для log4j версии 2.10+ (или log4j.configurationFile для более старых) или в переменной окружения с именем LOG4J_CONFIGURATION_FILE.

Например, используя свойство:

java -Dlog4j2.configurationFile=/path/to/log4j.properties -jar MyApp.jar

Этот подход больше годится для запуска программы не из IDE, т.е. когда вы хотите переопределить файл по умолчанию, который поставляется вместе с вашим приложением. Сам же файл по-умолчанию (или для разработки) удобно положить в корень ресурсов проекта, т.е. если используете стандартную структуру maven, то это будет папка src/main/resources.

Если ее у вас нет, то создайте ее начиная от корня модуля (имя и положение не имеет особого значения, главное должна быть за пределами уже существующих папок с исходным кодом, но лучше, конечно, использовать стандартные места). Потом в меню Project Structure -> Modules -> ваш модуль выберите вашу папку и пометьте ее как Resources. Потом перенесите туда ваш файл.

Добавление ресурсов к проекту IntelliJ IDEA

Вообще процесс загрузки и порядок мест, где log4j ищем конфигурацию описан в документации в разделе Automatic Configuration.

→ Ссылка