1   /**
2    * Logback: the generic, reliable, fast and flexible logging framework.
3    * 
4    * Copyright (C) 2000-2008, QOS.ch
5    * 
6    * This library is free software, you can redistribute it and/or modify it under
7    * the terms of the GNU Lesser General Public License as published by the Free
8    * Software Foundation.
9    */
10  package org.dummy;
11  
12  import static org.junit.Assert.assertEquals;
13  
14  import org.apache.log4j.Logger;
15  import org.junit.Before;
16  import org.junit.Test;
17  import org.slf4j.LoggerFactory;
18  
19  import ch.qos.logback.classic.Level;
20  import ch.qos.logback.classic.LoggerContext;
21  import ch.qos.logback.classic.PatternLayout;
22  import ch.qos.logback.classic.spi.LoggingEvent;
23  
24  /**
25   * Used to test log4j-over-slf4j
26   * 
27   * @author Ceki Gulcu
28   *
29   */
30  public class Log4jInvocation {
31  
32    static final String HELLO = "Hello";
33  
34    DummyLBAppender listAppender;
35    LoggerContext lc;
36    ch.qos.logback.classic.Logger rootLogger;
37    
38    @Before
39    public void fixture() {
40      lc = (LoggerContext) LoggerFactory.getILoggerFactory();
41      lc.reset();
42  
43      listAppender = new DummyLBAppender();
44      listAppender.setContext(lc);
45      listAppender.start();
46      rootLogger = lc.getLogger("root");
47      rootLogger.addAppender(listAppender);
48    }
49  
50    @Test
51    public void basic() {
52      assertEquals(0, listAppender.list.size());
53  
54      Logger logger = Logger.getLogger("basic-test");
55      logger.debug(HELLO);
56  
57      assertEquals(1, listAppender.list.size());
58      LoggingEvent event = (LoggingEvent) listAppender.list.get(0);
59      assertEquals(HELLO, event.getMessage());
60    }
61  
62    @Test
63    public void callerData() {
64      assertEquals(0, listAppender.list.size());
65  
66      PatternLayout pl = new PatternLayout();
67      pl.setPattern("%-5level [%class] %logger - %msg");
68      pl.setContext(lc);
69      pl.start();
70      listAppender.layout = pl;
71  
72      Logger logger = Logger.getLogger("basic-test");
73      logger.trace("none");
74      assertEquals(0, listAppender.list.size());
75      
76      rootLogger.setLevel(Level.TRACE);
77      logger.trace(HELLO);
78      assertEquals(1, listAppender.list.size());
79  
80      LoggingEvent event = (LoggingEvent) listAppender.list.get(0);
81      assertEquals(HELLO, event.getMessage());
82  
83      assertEquals(1, listAppender.stringList.size());
84      assertEquals("TRACE [" + Log4jInvocation.class.getName()
85          + "] basic-test - Hello", listAppender.stringList.get(0));
86    }
87  }