/* * (c) Rob Gordon 2005 */ package org.oddjob.logging.log4j; import junit.framework.TestCase; import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.oddjob.Structural; import org.oddjob.logging.LogEnabled; import org.oddjob.logging.LogEvent; import org.oddjob.logging.LogLevel; import org.oddjob.logging.LogListener; import org.oddjob.logging.MockLogArchiver; import org.oddjob.structural.ChildHelper; import org.oddjob.structural.StructuralListener; /** * */ public class Log4jArchiverTest extends TestCase { private class X implements LogEnabled { public String loggerName() { return "foo"; } } private class TestListener implements LogListener { LogEvent le; public void logEvent(LogEvent logEvent) { le = logEvent; } } // test Log4jArchiver archives a message sent to a Log4j Logger. public void testSimpleLogOutputCaptured() { X x = new X(); Log4jArchiver archiver = new Log4jArchiver(x, "%m"); Logger logger = Logger.getLogger("foo"); logger.setLevel(Level.DEBUG); logger.debug("Hello World"); TestListener tl = new TestListener(); archiver.addLogListener(tl, x, LogLevel.DEBUG, -1, 2000); assertEquals("event message", "Hello World", tl.le.getMessage()); } private class OurStructural implements Structural { ChildHelper<Object> children = new ChildHelper<Object>(this); @Override public void addStructuralListener(StructuralListener listener) { children.addStructuralListener(listener); } @Override public void removeStructuralListener(StructuralListener listener) { children.removeStructuralListener(listener); } } public void testChildLogOutputCaptured() { X x = new X(); OurStructural root = new OurStructural(); root.children.insertChild(0, x); Log4jArchiver archiver = new Log4jArchiver(root, "%m"); Logger logger = Logger.getLogger("foo"); logger.setLevel(Level.DEBUG); logger.debug("Hello World"); TestListener tl = new TestListener(); archiver.addLogListener(tl, x, LogLevel.DEBUG, -1, 2000); assertEquals("event message", "Hello World", tl.le.getMessage()); } private class OurArchiver extends MockLogArchiver implements LogEnabled { public String loggerName() { return "foo"; } } public void testLogArchiverChildLogOutputCaptured() { OurArchiver x = new OurArchiver(); OurStructural root = new OurStructural(); root.children.insertChild(0, x); Log4jArchiver archiver = new Log4jArchiver(root, "%m"); Logger logger = Logger.getLogger("foo"); logger.setLevel(Level.DEBUG); logger.debug("Hello World"); TestListener tl = new TestListener(); archiver.addLogListener(tl, x, LogLevel.DEBUG, -1, 2000); assertEquals("event message", "Hello World", tl.le.getMessage()); } }