我在Java中使用LogBack进行了一个小查询,我希望论坛上有人可以为我提供解决方案。
我正在运行一些测试,我可以单打或多次运行这些测试。当我以倍数运行它们时,我就会遇到问题。我想根据测试用例的名称记录要更改的文件。例如,当我运行10个测试并测试1个id 1时,当完成并测试2个启动时,我希望将其反映到日志文件中,并且我希望创建第二个日志文件,其ID为2。
我希望这是有道理的,如果您有任何其他问题,请不要犹豫。
提前谢谢。
答案 0 :(得分:1)
您可以使用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
的值将替换为日志文件名。您通过testName
设置org.slf4j.MDC
。例如;
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&#39; TestName Rule获取当前的测试名称,然后使用@Before
,@After
方法进行/删除。