我正在使用logback,并且尝试在我的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 自动配置执行之前执行它,你就可以得到想要的结果了。 - Robert