gpt4 book ai didi

java - logback 以编程方式创建一个新的日志实例

转载 作者:行者123 更新时间:2023-12-02 12:30:01 25 4
gpt4 key购买 nike

我正在使用 Java 中的 LogBack 进行一个小查询,我希望论坛上有人可以为我提供解决方案。

我正在运行一些测试,我可以单个或多个运行这些测试。当我多次运行它们时,我遇到了问题。我想记录文件根据测试用例的名称进行更改。例如,当我运行 10 个测试并且测试 1 id 1 时,当测试完成并且测试 2 开始时,我希望将其反射(reflect)到日志文件中,并且我希望使用 id 2 创建第二个日志文件。

我希望这是有道理的,如果您有任何其他问题,请随时询问。

提前谢谢您。

最佳答案

您可以使用Logback的SiftingAppender .

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

<appender name="SIFTER" class="ch.qos.logback.classic.sift.SiftingAppender">
<discriminator>
<key>testName</key>
<defaultValue>UNKNOWN</defaultValue>
</discriminator>
<sift>
<appender name="FILE-${testName}" class="ch.qos.logback.core.FileAppender">
<file>test-${testName}.log</file>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>...</pattern>
</layout>
</appender>
</sift>
</appender>

<root level="ALL">
<appender-ref ref="SIFTER" />
</root>
</configuration>

testName 的值将替换为日志文件名。您可以通过 org.slf4j.MDC 设置 testName。例如;

String testName = "...";
MDC.put("testName", testName);

// run your test
// ...

// remove the test name from MDC ready for the next test to set its own name
MDC.remove("testName");

您可以使用 JUnit4 的 TestName Rule获取当前测试名称,然后在 @Before@After 方法中放置/删除。

关于java - logback 以编程方式创建一个新的日志实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45322660/

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