Любое свойство системы Java может использоваться в файле конфигурации log4j. Например, ваше приложение при запуске может сделать что-то вроде:
String directory = "logfiles"; // relative to "."
try {
path = new File(directory).getCanonicalPath();
} catch (IOException e) {
// Cannot use log4j yet, so complain to system out
System.out.println("Could not get canonical path for " + directory, e);
}
System.setProperty("log.home", path);
// Now that we've configured log.home, start logging
DOMConfigurator.configureAndWatch("log4j_config.xml");
и затем в файле конфигурации log4j используйте это правильно, как:
<param name="File" value="${log.home}/GPreprocessor_Debug.log"/>
Единственным недостатком этого является то, что вы должны определить системное свойство перед инициализацией регистрации log4j. Конечно, вы также можете определить эти параметры в командной строке Java через «-Dlog.home = D: / logFiles», если это более удобно.