Вы используете Поиск свойств системы неправильно.Вы должны указать поиск и ключ, который хотите найти следующим образом: ${sys:logfilename}
Вот простой пример:
package example;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class SomeClass {
private static final Logger log = LogManager.getLogger();
public static void main(String[] args){
log.info("Here's some info!");
}
}
Вот файл конфигурации log4j2.xml:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<File name="File" fileName="logs/${sys:myProperty}"
immediateFlush="false" append="false">
<PatternLayout
pattern="%-5level %logger{36} - %msg%n" />
</File>
</Appenders>
<Loggers>
<Root level="debug">
<AppenderRef ref="File" />
</Root>
</Loggers>
</Configuration>
Когда я запускаю этот код со следующим параметром JVM:
-DmyProperty=myFile.log
, он создает файл с именем «myFile.log», и файл содержит следующий вывод:
INFO example.SomeClass - Here's some info!