estoy usando logback, y yo estoy tratando de establecer el nombre del archivo de registro mediante programación dentro de mi programa Java (similar a Setting Logback Appender path programmatically), y yo trataba de adaptar dicha solución de la siguiente manera:Logback - ajuste el nombre de archivo de registro mediante programación
en logback-test.xml:
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>log/${log_file_name}.log</file>
...
y luego otra vez en mi programa 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);
Sin embargo, el resultado son dos registros, uno completo y nombrado como quería, por ejemplo, "131904 1145343.log ", y el otro está vacío y se llama" log_file_name_IS_UNDEFINED.log ". ¿Cómo evito que se cree este otro archivo de registro vacío?
El único problema de su código parece ser que está configurando 'System.setProperty (" log_file_name ", logFileName);' demasiado tarde. Ejecútelo antes de que se haya ejecutado la configuración automática de Logback y tenga lo que desea. – Robert
En realidad, se puede hacer mucho más fácilmente que en su fragmento de código: http://stackoverflow.com/a/21886071/709537 –