1   package org.slf4j.impl;
2   
3   import static org.junit.Assert.assertEquals;
4   
5   import java.util.Random;
6   
7   import org.junit.After;
8   import org.junit.Before;
9   import org.junit.Test;
10  import org.slf4j.Logger;
11  import org.slf4j.LoggerFactory;
12  import org.slf4j.LoggerFactoryFriend;
13  
14  import ch.qos.logback.classic.LoggerContext;
15  import ch.qos.logback.classic.util.ContextInitializer;
16  import ch.qos.logback.core.status.Status;
17  import ch.qos.logback.core.status.StatusManager;
18  import ch.qos.logback.core.util.StatusPrinter;
19  
20  public class RecursiveInitializationTest {
21  
22    int diff = new Random().nextInt();
23  
24    @Before
25    public void setUp() throws Exception {
26      System.setProperty(ContextInitializer.CONFIG_FILE_PROPERTY,
27          "recursiveInit.xml");
28      StaticLoggerBinderFriend.reset();
29      LoggerFactoryFriend.reset();
30  
31    }
32  
33    @After
34    public void tearDown() throws Exception {
35      System.clearProperty(ContextInitializer.CONFIG_FILE_PROPERTY);
36    }
37  
38    @Test
39    public void recursiveLogbackInitialization() {
40      Logger logger = LoggerFactory.getLogger("RecursiveInitializationTest"
41          + diff);
42      logger.info("RecursiveInitializationTest");
43  
44      LoggerContext loggerContext = (LoggerContext) LoggerFactory
45          .getILoggerFactory();
46      StatusPrinter.printInCaseOfErrorsOrWarnings(loggerContext);
47      StatusManager sm = loggerContext.getStatusManager();
48      assertEquals("Was expecting no errors", Status.WARN, sm.getLevel());
49    }
50  
51  }