Я использую логбэк и пытаюсь программно установить имя файла журнала в своей программе на Java (аналогично Программная установка пути Logback Appender), и я попытался адаптировать это решение следующим образом:
В logback-test.xml:
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>log/${log_file_name}.log</file>
...
И снова в моей программе на Java:
String logFileName = "" + System.currentTimeMillis(); // just for example
System.setProperty("log_file_name", logFileName);
LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
ContextInitializer ci = new ContextInitializer(lc);
lc.reset();
try
{
// I prefer autoConfig() over JoranConfigurator.doConfigure() so I
// wouldn't need to find the file myself.
ci.autoConfig();
}
catch (JoranException e)
{
// StatusPrinter will try to log this
e.printStackTrace();
}
StatusPrinter.printInCaseOfErrorsOrWarnings(lc);
Однако результатом являются два журнала, один полный и назван так, как я хотел, например, «1319041145343.log», а другой пустой и назван «log_file_name_IS_UNDEFINED.log». Как мне остановить создание этого другого пустого файла журнала?
System.setProperty("log_file_name", logFileName);
. Выполните его до того, как будет выполнена автоконфигурация Logback, и у вас будет то, что вы хотите. - person Robert   schedule 30.01.2013