gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 18:13:49 26 4
gpt4 key购买 nike

我对更改 slf4j 记录器的日志文件名称有疑问。在 logback.xml 文件中,该值设置为 myApp.log。我希望每次在 Java 中运行代码时都能够更改此文件名,其中文件名是我运行问题的设置的组合。正如您可以想象的那样,我宁愿用 Java 编写一些代码,而不是每次都在 logback.xml 文件中手动更改它。

Change the name of a logging output file from Java in SLF4j

我已经在上面的链接中看到了该线程,但这似乎对我有用。我目前的实现如下

    /* 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>

关于java - 如何更改slf4j记录器的日志文件名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60411124/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com