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

Popular posts from this blog

python - Selenium remoteWebDriver (& SauceLabs) Firefox moseMoveTo action exception -

html - How to custom Bootstrap grid height? -

transpose - Maple isnt executing function but prints function term -