我使用的logback,和我想我的Java程序(類似於Setting Logback Appender path programmatically)內編程設置日誌文件名,我努力去適應這種解決辦法如下:的logback - 集日誌文件名編程
在的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);
然而結果是兩個記錄,一個完整的,命名爲我想要的,例如「131904 1145343.log「,另一個爲空,並命名爲」log_file_name_IS_UNDEFINED.log「。如何停止創建其他空白日誌文件?
你的代碼的唯一問題似乎是你正在設置'System.setProperty(「log_file_name」,logFileName)''太遲了。在Logback autoconfig執行之前執行它,你有你想要的。 – Robert
它實際上可以做得比在你的代碼片段中容易得多:http://stackoverflow.com/a/21886071/709537 –