如何更改slf4j记录器的日志文件的名称



我对更改slf4j记录器的日志文件的名称有疑问。在logback.xml文件中,它被设置为myApp.log。我希望每次在Java中运行代码时都能更改此文件名,其中文件名是我运行问题时设置的组合。正如你所想象的,我有一些Java代码,而不是每次在logback.xml文件中手动更改。

在SLF4j 中从Java更改日志输出文件的名称

我已经在上面的链接中看到了线程,但是这似乎对我有效

/* Configure parameters */
Properties properties = new Properties();
Configuration.readFromFile(properties);
properties.setProperty("MAXTHREADS", "1");
properties.setProperty("EXPORT_MODEL", "false");
properties.setProperty("log4j.appender.debugFile.File", "test.log");
properties.setProperty("log4j.appender.infoFile.File", "test2.log");
properties.setProperty("log4j.appender.warnFile.File", "test3.log");
properties.setProperty("log4j.appender.errorFile.File", "test4.log");

如果我使用这些设置运行它,输出仍然保存在myApp.log中

欢迎提出任何建议!

您可以使用筛选附加器和

MDC.put("myRun", "runXXXX");

在运行代码之前。

在你的logback.xml中有这样的东西:

<appender name="MapiContextSplit" class="ch.qos.logback.classic.sift.SiftingAppender">
<discriminator>
<key>myRun</key>
<defaultValue>default</defaultValue>
</discriminator>
<sift>
<appender name="FILE-${myRun}" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/var/log/test-${myRun}.log</file>
</appender>
</sift>
</appender>