/apache-log4j-1.2.17/tests/src/java/org/apache/log4j/LoggerTestCase.java
Java | 499 lines | 351 code | 89 blank | 59 comment | 0 complexity | 56b3a86c4f878af6139d2d7c38d9bc97 MD5 | raw file
Possible License(s): Apache-2.0
- /*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- package org.apache.log4j;
- import junit.framework.TestCase;
- import org.apache.log4j.spi.LoggingEvent;
- import org.apache.log4j.spi.RootLogger;
- import org.apache.log4j.spi.LoggerRepository;
- import org.apache.log4j.spi.HierarchyEventListener;
- import java.util.Enumeration;
- import java.util.Locale;
- import java.util.ResourceBundle;
- import java.util.Vector;
- /**
- Used for internal unit testing the Logger class.
- @author Ceki Gülcü
- */
- public class LoggerTestCase extends TestCase {
- Logger logger;
- Appender a1;
- Appender a2;
- ResourceBundle rbUS;
- ResourceBundle rbFR;
- ResourceBundle rbCH;
- // A short message.
- static String MSG = "M";
-
- public LoggerTestCase(String name) {
- super(name);
- }
- public
- void setUp() {
- rbUS = ResourceBundle.getBundle("L7D", new Locale("en", "US"));
- assertNotNull(rbUS);
- rbFR = ResourceBundle.getBundle("L7D", new Locale("fr", "FR"));
- assertNotNull("Got a null resource bundle.", rbFR);
- rbCH = ResourceBundle.getBundle("L7D", new Locale("fr", "CH"));
- assertNotNull("Got a null resource bundle.", rbCH);
- }
- public
- void tearDown() {
- // Regular users should not use the clear method lightly!
- //Logger.getDefaultHierarchy().clear();
- BasicConfigurator.resetConfiguration();
- a1 = null;
- a2 = null;
- }
- /**
- Add an appender and see if it can be retrieved.
- */
- public
- void testAppender1() {
- logger = Logger.getLogger("test");
- a1 = new FileAppender();
- a1.setName("testAppender1");
- logger.addAppender(a1);
- Enumeration enumeration = logger.getAllAppenders();
- Appender aHat = (Appender) enumeration.nextElement();
- assertEquals(a1, aHat);
- }
- /**
- Add an appender X, Y, remove X and check if Y is the only
- remaining appender.
- */
- public
- void testAppender2() {
- a1 = new FileAppender();
- a1.setName("testAppender2.1");
- a2 = new FileAppender();
- a2.setName("testAppender2.2");
- logger = Logger.getLogger("test");
- logger.addAppender(a1);
- logger.addAppender(a2);
- logger.removeAppender("testAppender2.1");
- Enumeration enumeration = logger.getAllAppenders();
- Appender aHat = (Appender) enumeration.nextElement();
- assertEquals(a2, aHat);
- assertTrue(!enumeration.hasMoreElements());
- }
- /**
- Test if logger a.b inherits its appender from a.
- */
- public
- void testAdditivity1() {
- Logger a = Logger.getLogger("a");
- Logger ab = Logger.getLogger("a.b");
- CountingAppender ca = new CountingAppender();
- a.addAppender(ca);
-
- assertEquals(ca.counter, 0);
- ab.debug(MSG); assertEquals(ca.counter, 1);
- ab.info(MSG); assertEquals(ca.counter, 2);
- ab.warn(MSG); assertEquals(ca.counter, 3);
- ab.error(MSG); assertEquals(ca.counter, 4);
-
- }
- /**
- Test multiple additivity.
- */
- public
- void testAdditivity2() {
-
- Logger a = Logger.getLogger("a");
- Logger ab = Logger.getLogger("a.b");
- Logger abc = Logger.getLogger("a.b.c");
- Logger x = Logger.getLogger("x");
- CountingAppender ca1 = new CountingAppender();
- CountingAppender ca2 = new CountingAppender();
- a.addAppender(ca1);
- abc.addAppender(ca2);
- assertEquals(ca1.counter, 0);
- assertEquals(ca2.counter, 0);
-
- ab.debug(MSG);
- assertEquals(ca1.counter, 1);
- assertEquals(ca2.counter, 0);
- abc.debug(MSG);
- assertEquals(ca1.counter, 2);
- assertEquals(ca2.counter, 1);
- x.debug(MSG);
- assertEquals(ca1.counter, 2);
- assertEquals(ca2.counter, 1);
- }
- /**
- Test additivity flag.
- */
- public
- void testAdditivity3() {
- Logger root = Logger.getRootLogger();
- Logger a = Logger.getLogger("a");
- Logger ab = Logger.getLogger("a.b");
- Logger abc = Logger.getLogger("a.b.c");
- CountingAppender caRoot = new CountingAppender();
- CountingAppender caA = new CountingAppender();
- CountingAppender caABC = new CountingAppender();
- root.addAppender(caRoot);
- a.addAppender(caA);
- abc.addAppender(caABC);
- assertEquals(caRoot.counter, 0);
- assertEquals(caA.counter, 0);
- assertEquals(caABC.counter, 0);
-
- ab.setAdditivity(false);
- a.debug(MSG);
- assertEquals(caRoot.counter, 1);
- assertEquals(caA.counter, 1);
- assertEquals(caABC.counter, 0);
- ab.debug(MSG);
- assertEquals(caRoot.counter, 1);
- assertEquals(caA.counter, 1);
- assertEquals(caABC.counter, 0);
- abc.debug(MSG);
- assertEquals(caRoot.counter, 1);
- assertEquals(caA.counter, 1);
- assertEquals(caABC.counter, 1);
-
- }
- public
- void testDisable1() {
- CountingAppender caRoot = new CountingAppender();
- Logger root = Logger.getRootLogger();
- root.addAppender(caRoot);
- LoggerRepository h = LogManager.getLoggerRepository();
- //h.disableDebug();
- h.setThreshold((Level) Level.INFO);
- assertEquals(caRoot.counter, 0);
- root.debug(MSG); assertEquals(caRoot.counter, 0);
- root.info(MSG); assertEquals(caRoot.counter, 1);
- root.log(Level.WARN, MSG); assertEquals(caRoot.counter, 2);
- root.warn(MSG); assertEquals(caRoot.counter, 3);
- //h.disableInfo();
- h.setThreshold((Level) Level.WARN);
- root.debug(MSG); assertEquals(caRoot.counter, 3);
- root.info(MSG); assertEquals(caRoot.counter, 3);
- root.log(Level.WARN, MSG); assertEquals(caRoot.counter, 4);
- root.error(MSG); assertEquals(caRoot.counter, 5);
- root.log(Level.ERROR, MSG); assertEquals(caRoot.counter, 6);
- //h.disableAll();
- h.setThreshold(Level.OFF);
- root.debug(MSG); assertEquals(caRoot.counter, 6);
- root.info(MSG); assertEquals(caRoot.counter, 6);
- root.log(Level.WARN, MSG); assertEquals(caRoot.counter, 6);
- root.error(MSG); assertEquals(caRoot.counter, 6);
- root.log(Level.FATAL, MSG); assertEquals(caRoot.counter, 6);
- root.log(Level.FATAL, MSG); assertEquals(caRoot.counter, 6);
- //h.disable(Level.FATAL);
- h.setThreshold(Level.OFF);
- root.debug(MSG); assertEquals(caRoot.counter, 6);
- root.info(MSG); assertEquals(caRoot.counter, 6);
- root.log(Level.WARN, MSG); assertEquals(caRoot.counter, 6);
- root.error(MSG); assertEquals(caRoot.counter, 6);
- root.log(Level.ERROR, MSG); assertEquals(caRoot.counter, 6);
- root.log(Level.FATAL, MSG); assertEquals(caRoot.counter, 6);
- }
- public
- void testRB1() {
- Logger root = Logger.getRootLogger();
- root.setResourceBundle(rbUS);
- ResourceBundle t = root.getResourceBundle();
- assertSame(t, rbUS);
- Logger x = Logger.getLogger("x");
- Logger x_y = Logger.getLogger("x.y");
- Logger x_y_z = Logger.getLogger("x.y.z");
- t = x.getResourceBundle(); assertSame(t, rbUS);
- t = x_y.getResourceBundle(); assertSame(t, rbUS);
- t = x_y_z.getResourceBundle(); assertSame(t, rbUS);
- }
- public
- void testRB2() {
- Logger root = Logger.getRootLogger();
- root.setResourceBundle(rbUS);
- ResourceBundle t = root.getResourceBundle();
- assertSame(t, rbUS);
- Logger x = Logger.getLogger("x");
- Logger x_y = Logger.getLogger("x.y");
- Logger x_y_z = Logger.getLogger("x.y.z");
- x_y.setResourceBundle(rbFR);
- t = x.getResourceBundle(); assertSame(t, rbUS);
- t = x_y.getResourceBundle(); assertSame(t, rbFR);
- t = x_y_z.getResourceBundle(); assertSame(t, rbFR);
- }
- public
- void testRB3() {
- Logger root = Logger.getRootLogger();
- root.setResourceBundle(rbUS);
- ResourceBundle t = root.getResourceBundle();
- assertSame(t, rbUS);
- Logger x = Logger.getLogger("x");
- Logger x_y = Logger.getLogger("x.y");
- Logger x_y_z = Logger.getLogger("x.y.z");
- x_y.setResourceBundle(rbFR);
- x_y_z.setResourceBundle(rbCH);
- t = x.getResourceBundle(); assertSame(t, rbUS);
- t = x_y.getResourceBundle(); assertSame(t, rbFR);
- t = x_y_z.getResourceBundle(); assertSame(t, rbCH);
- }
- public
- void testExists() {
- Logger a = Logger.getLogger("a");
- Logger a_b = Logger.getLogger("a.b");
- Logger a_b_c = Logger.getLogger("a.b.c");
-
- Logger t;
- t = LogManager.exists("xx"); assertNull(t);
- t = LogManager.exists("a"); assertSame(a, t);
- t = LogManager.exists("a.b"); assertSame(a_b, t);
- t = LogManager.exists("a.b.c"); assertSame(a_b_c, t);
- }
- public
- void testHierarchy1() {
- Hierarchy h = new Hierarchy(new RootLogger((Level) Level.ERROR));
- Logger a0 = h.getLogger("a");
- assertEquals("a", a0.getName());
- assertNull(a0.getLevel());
- assertSame(Level.ERROR, a0.getEffectiveLevel());
- Logger a1 = h.getLogger("a");
- assertSame(a0, a1);
- }
- /**
- * Tests logger.trace(Object).
- * @since 1.2.12
- */
- public void testTrace() {
- VectorAppender appender = new VectorAppender();
- appender.activateOptions();
- Logger root = Logger.getRootLogger();
- root.addAppender(appender);
- root.setLevel(Level.INFO);
- Logger tracer = Logger.getLogger("com.example.Tracer");
- tracer.setLevel(Level.TRACE);
- tracer.trace("Message 1");
- root.trace("Discarded Message");
- root.trace("Discarded Message");
- Vector msgs = appender.getVector();
- assertEquals(1, msgs.size());
- LoggingEvent event = (LoggingEvent) msgs.elementAt(0);
- assertEquals(Level.TRACE, event.getLevel());
- assertEquals("Message 1", event.getMessage());
- }
- /**
- * Tests logger.trace(Object, Exception).
- * @since 1.2.12
- */
- public void testTraceWithException() {
- VectorAppender appender = new VectorAppender();
- appender.activateOptions();
- Logger root = Logger.getRootLogger();
- root.addAppender(appender);
- root.setLevel(Level.INFO);
- Logger tracer = Logger.getLogger("com.example.Tracer");
- tracer.setLevel(Level.TRACE);
- NullPointerException ex = new NullPointerException();
- tracer.trace("Message 1", ex);
- root.trace("Discarded Message", ex);
- root.trace("Discarded Message", ex);
- Vector msgs = appender.getVector();
- assertEquals(1, msgs.size());
- LoggingEvent event = (LoggingEvent) msgs.elementAt(0);
- assertEquals(Level.TRACE, event.getLevel());
- assertEquals("Message 1", event.getMessage());
- }
- /**
- * Tests isTraceEnabled.
- * @since 1.2.12
- */
- public void testIsTraceEnabled() {
- VectorAppender appender = new VectorAppender();
- appender.activateOptions();
- Logger root = Logger.getRootLogger();
- root.addAppender(appender);
- root.setLevel(Level.INFO);
- Logger tracer = Logger.getLogger("com.example.Tracer");
- tracer.setLevel(Level.TRACE);
- assertTrue(tracer.isTraceEnabled());
- assertFalse(root.isTraceEnabled());
- }
- private static final class CountingHierarchyEventListener implements HierarchyEventListener {
- private int addEventCount;
- private int removeEventCount;
- public CountingHierarchyEventListener() {
- addEventCount = removeEventCount = 0;
- }
- public void addAppenderEvent(Category cat, Appender appender) {
- addEventCount++;
- }
- public void removeAppenderEvent(Category cat, Appender appender) {
- removeEventCount++;
- }
- public int getAddEventCount() {
- return addEventCount;
- }
- public int getRemoveEventCount() {
- return removeEventCount;
- }
- }
- public void testAppenderEvent1() {
- CountingHierarchyEventListener listener = new CountingHierarchyEventListener();
- LogManager.getLoggerRepository().addHierarchyEventListener(listener);
- CountingAppender appender = new CountingAppender();
- Logger root = Logger.getRootLogger();
- root.addAppender(appender);
- assertEquals(1, listener.getAddEventCount());
- assertEquals(0, listener.getRemoveEventCount());
- root.removeAppender(appender);
- assertEquals(1, listener.getAddEventCount());
- assertEquals(1, listener.getRemoveEventCount());
- }
- public void testAppenderEvent2() {
- CountingHierarchyEventListener listener = new CountingHierarchyEventListener();
- LogManager.getLoggerRepository().addHierarchyEventListener(listener);
- CountingAppender appender = new CountingAppender();
- appender.setName("A1");
- Logger root = Logger.getRootLogger();
- root.addAppender(appender);
- assertEquals(1, listener.getAddEventCount());
- assertEquals(0, listener.getRemoveEventCount());
- root.removeAppender(appender.getName());
- assertEquals(1, listener.getAddEventCount());
- assertEquals(1, listener.getRemoveEventCount());
- }
- public void testAppenderEvent3() {
- CountingHierarchyEventListener listener = new CountingHierarchyEventListener();
- LogManager.getLoggerRepository().addHierarchyEventListener(listener);
- CountingAppender appender = new CountingAppender();
- Logger root = Logger.getRootLogger();
- root.addAppender(appender);
- assertEquals(1, listener.getAddEventCount());
- assertEquals(0, listener.getRemoveEventCount());
- root.removeAllAppenders();
- assertEquals(1, listener.getAddEventCount());
- assertEquals(1, listener.getRemoveEventCount());
- }
- public void testAppenderEvent4() {
- CountingHierarchyEventListener listener = new CountingHierarchyEventListener();
- LogManager.getLoggerRepository().addHierarchyEventListener(listener);
- CountingAppender appender = new CountingAppender();
- Logger root = Logger.getRootLogger();
- root.addAppender(appender);
- assertEquals(1, listener.getAddEventCount());
- assertEquals(0, listener.getRemoveEventCount());
- LogManager.resetConfiguration();
- assertEquals(1, listener.getAddEventCount());
- assertEquals(1, listener.getRemoveEventCount());
- }
- static private class CountingAppender extends AppenderSkeleton {
- int counter;
- CountingAppender() {
- counter = 0;
- }
- public void close() {
- }
- public
- void append(LoggingEvent event) {
- counter++;
- }
-
- public
- boolean requiresLayout() {
- return true;
- }
- }
- }