Sto usando logback, e sto cercando di impostare il nome del file di registro a livello di codice nel mio programma Java (simile a Setting Logback Appender path programmatically), e ho cercato di adattare tale soluzione come segue:Logback - insieme il nome del file di registro di programmazione
in logback-test.xml:
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>log/${log_file_name}.log</file>
...
e poi di nuovo nel mio programma 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);
Tuttavia il risultato è di due tronchi, uno pieno e nominato come avrei voluto, per esempio, "131904 1145343.log ", e l'altro è vuoto e denominato" log_file_name_IS_UNDEFINED.log ". Come posso impedire che questo altro file di registro vuoto venga creato?
L'unico problema del codice sembra essere l'impostazione di 'System.setProperty (" log_file_name ", logFileName);' troppo tardi. Eseguilo prima che l'autoconfig di Logback sia stato eseguito e tu abbia quello che vuoi. – Robert
In realtà può essere fatto molto più facilmente che nel tuo snippet di codice: http://stackoverflow.com/a/21886071/709537 –