ОБНОВЛЕНИЕ : Оригинальный ответ относится к Log4j 1.x
Log4j 2.x имеет гораздо более богатую поддержку свойств в файле конфигурации, см. Руководство Log4j о Конфигурация со свойствами .
Log4j 1.x (оригинальный ответ):
Единственный способ добиться чего-то похожего при использовании log4j.xml
- установить системное свойство при запуске и затем ссылаться на него из вашего log4j.xml
.
При запуске вы устанавливаете системное свойство:
java -Dlog_dir=/var/logs/custom com.yourorg.yourapp.Main
Или установить его программно во время выполнения (до инициализации Log4j):
System.setProperty("log_dir", "/var/logs/custom")
Тогда вы можете сослаться на это так:
<appender name="MyAppender"class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="${log_dir}/my.log"/>
...
</appender>
Или в файле свойств, например:
log4j.appender.MyAppender.File = ${log_dir}/my.log
Источник: я получил вдохновение для этого ответа от Использование системных переменных среды в конфигурации xml log4j .
Также, если вы работаете под Tomcat, вы можете использовать переменную ${catalina.home}
, например:
<appender name="MyAppender"class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="${catalina.home}/logs/my.log"/>
...
</appender>