1 package org.naftulin.logwrapper;
2
3 import java.util.logging.Handler;
4 import java.util.logging.LogRecord;
5
6 import org.apache.log4j.AppenderSkeleton;
7 import org.apache.log4j.Category;
8 import org.apache.log4j.Level;
9 import org.apache.log4j.Logger;
10 import org.apache.log4j.spi.LoggingEvent;
11 import org.naftulin.logwrapper.JDKLogAdapter;
12 import org.naftulin.logwrapper.Log4JLogAdapter;
13 import org.naftulin.logwrapper.LogAdapter;
14 import org.naftulin.logwrapper.LogLevelAdaptor;
15
16 import junit.framework.TestCase;
17
18 public class LogAdapterTest extends TestCase {
19 /***
20 * Tests log adapter class to instantiate a correct logger.
21 * Since log4j is in the class path, log4j log adapter should
22 * be instantiated.
23 */
24 public void testLogAdapterGetLogger() {
25 LogAdapter testAdapter = LogAdapter.getLogger(LogAdapterTest.class);
26 assertNotNull("testAdapter", testAdapter);
27 assertTrue("testAdapter instanceof Log4JLogAdapter", testAdapter instanceof Log4JLogAdapter);
28 }
29
30 /***
31 * Tests that the correct log level is applied to the correct log category
32 */
33 public void testLog4JLogAdapter() {
34 Log4JLogAdapter log = new Log4JLogAdapter(this.getClass());
35 Category rootCategory = Logger.getRoot();
36 DummyLog4JAppender myTestAppender = new DummyLog4JAppender();
37 rootCategory.addAppender(myTestAppender);
38
39 log.log(LogLevelAdaptor.WARN, "test message");
40 assertNotNull("event", myTestAppender.event);
41 assertEquals("log level", Level.WARN, myTestAppender.event.getLevel());
42 assertEquals("loger name", this.getClass().getName(), myTestAppender.event.getLoggerName());
43
44 }
45
46 /***
47 * Tests that the correct log level is applied to the correct log category
48 */
49 public void testJDKLogAdapter() {
50 JDKLogAdapter log = new JDKLogAdapter(this.getClass());
51 java.util.logging.Logger rootLogger = java.util.logging.Logger.global;
52 while(rootLogger.getParent() != null && rootLogger.getParent() != rootLogger) {
53 rootLogger = rootLogger.getParent();
54 }
55 java.util.logging.Level prevLevel = rootLogger.getLevel();
56 rootLogger.setLevel(java.util.logging.Level.FINEST);
57 DummyJDKHadler myTestHandler = new DummyJDKHadler();
58 rootLogger.addHandler(myTestHandler);
59
60
61
62 log.log(LogLevelAdaptor.WARN, "test message");
63 assertNotNull("record", myTestHandler.record);
64 assertEquals("log level", java.util.logging.Level.WARNING, myTestHandler.record.getLevel());
65 assertEquals("loger name", this.getClass().getName(), myTestHandler.record.getLoggerName());
66 rootLogger.setLevel(prevLevel);
67 }
68 }
69
70 class DummyLog4JAppender extends AppenderSkeleton {
71 LoggingEvent event = null;
72 protected void append(LoggingEvent arg0) { event = arg0;}
73 public void close() {}
74 public boolean requiresLayout() { return false; }
75 };
76
77 class DummyJDKHadler extends Handler {
78 LogRecord record = null;
79 public void publish(LogRecord arg0) { record = arg0; }
80 public void flush() {}
81 public void close() {}
82 };