java - logback create a new log instance programmatically -
i having small query logback in java , i'm hoping on forum might have solution me.
i running tests, can run tests in singles or multiples. when running them in multiples issue. want log file change depending on name of test case. example when run 10 tests , test 1 id 1, when finishes , test 2 starts want reflected log file , want second log file created id 2.
i hope makes sense, , if have additional questions please don't hesitate ask.
thank in advance.
you can use logback's 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> the value of testname substituted log file name. set testname via org.slf4j.mdc. example;
string testname = "..."; mdc.put("testname", testname); // run test // ... // remove test name mdc ready next test set own name mdc.remove("testname"); you use junit4's testname rule current test name , put/remove in @before, @after methods.
Comments
Post a Comment