Как привязать 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 шт):
Можно передать путь к файлу в системном свойстве 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. Потом перенесите туда ваш файл.
Вообще процесс загрузки и порядок мест, где log4j ищем конфигурацию описан в документации в разделе Automatic Configuration.
