1   package org.slf4j.bridge;
2   
3   import java.util.logging.Level;
4   
5   import org.apache.log4j.spi.LocationInfo;
6   import org.apache.log4j.spi.LoggingEvent;
7   import org.slf4j.bridge.SLF4JBridgeHandler;
8   
9   import junit.framework.TestCase;
10  
11  public class SLF4JBridgeHandlerTest extends TestCase {
12  
13    static String LOGGER_NAME = "yay";
14  
15    ListAppender listAppender = new ListAppender();
16    org.apache.log4j.Logger log4jRoot;
17    java.util.logging.Logger julLogger = java.util.logging.Logger
18        .getLogger("yay");
19  
20    public SLF4JBridgeHandlerTest(String arg0) {
21      super(arg0);
22    }
23  
24    protected void setUp() throws Exception {
25      super.setUp();
26      listAppender.extractLocationInfo = true;
27      log4jRoot = org.apache.log4j.Logger.getRootLogger();
28      log4jRoot.addAppender(listAppender);
29      log4jRoot.setLevel(org.apache.log4j.Level.TRACE);
30    }
31  
32    protected void tearDown() throws Exception {
33      super.tearDown();
34      log4jRoot.getLoggerRepository().resetConfiguration();
35    }
36  
37    public void testSmoke() {
38      SLF4JBridgeHandler.install();
39      String msg = "msg";
40      julLogger.info(msg);
41      assertEquals(1, listAppender.list.size());
42      LoggingEvent le = (LoggingEvent) listAppender.list.get(0);
43      assertEquals(LOGGER_NAME, le.getLoggerName());
44      assertEquals(msg, le.getMessage());
45  
46      // get the location info in the event.
47      // Note that this must have been computed previously
48      // within an appender for the following assertion to
49      // work properly
50      LocationInfo li = le.getLocationInformation();
51      System.out.println(li.fullInfo);
52      assertEquals("SLF4JBridgeHandlerTest.java", li.getFileName());
53      assertEquals("testSmoke", li.getMethodName());
54    }
55  
56    public void testLevels() {
57      SLF4JBridgeHandler.install();
58      String msg = "msg";
59      julLogger.setLevel(Level.ALL);
60  
61      julLogger.finest(msg);
62      julLogger.finer(msg);
63      julLogger.fine(msg);
64      julLogger.info(msg);
65      julLogger.warning(msg);
66      julLogger.severe(msg);
67  
68      assertEquals(6, listAppender.list.size());
69      int i = 0;
70      assertLevel(i++, org.apache.log4j.Level.TRACE);
71      assertLevel(i++, org.apache.log4j.Level.DEBUG);
72      assertLevel(i++, org.apache.log4j.Level.DEBUG);
73      assertLevel(i++, org.apache.log4j.Level.INFO);
74      assertLevel(i++, org.apache.log4j.Level.WARN);
75      assertLevel(i++, org.apache.log4j.Level.ERROR);
76    }
77  
78    void assertLevel(int index, org.apache.log4j.Level expectedLevel) {
79      LoggingEvent le = (LoggingEvent) listAppender.list.get(index);
80      assertEquals(expectedLevel, le.getLevel());
81    }
82  }