ceki 2003/09/17 08:09:08 Modified: src/java/org/apache/log4j Hierarchy.java PropertyConfigurator.java LogManager.java tests build.xml src/java/org/apache/log4j/config PropertySetter.java tests/src/java/org/apache/log4j/helpers BoundedFIFOTestCase.java Added: tests/src/java/org/apache/log4j PatternLayoutTest.java Removed: tests/src/java/org/apache/log4j PatternLayoutTestCase.java Log: - Internal logging is now on even after a LogManager.resetConfiguration. (Temporary code. All this will be radically changed when Domains enter the scene.) - PropertySetter.setProperties method no longer activates the options of OptionHandlers. This results in slighly less confusing code. Changed ProppertyConfigurator to take thismodification into account. - Renamed test cases from XTestCase to XTest where X varies. Revision Changes Path 1.46 +3 -0 jakarta-log4j/src/java/org/apache/log4j/Hierarchy.java Index: Hierarchy.java =================================================================== RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/Hierarchy.java,v retrieving revision 1.45 retrieving revision 1.46 diff -u -r1.45 -r1.46 --- Hierarchy.java 18 Mar 2003 21:17:42 -0000 1.45 +++ Hierarchy.java 17 Sep 2003 15:09:07 -0000 1.46 @@ -584,6 +584,9 @@ c.removeAllAppenders(); } } + + // log4j self configure + LogManager.internalConf(); } /** 1.59 +9 -3 jakarta-log4j/src/java/org/apache/log4j/PropertyConfigurator.java Index: PropertyConfigurator.java =================================================================== RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/PropertyConfigurator.java,v retrieving revision 1.58 retrieving revision 1.59 diff -u -r1.58 -r1.59 --- PropertyConfigurator.java 18 Mar 2003 20:28:19 -0000 1.58 +++ PropertyConfigurator.java 17 Sep 2003 15:09:07 -0000 1.59 @@ -692,14 +692,14 @@ appender.setLayout(layout); LogLog.debug("Parsing layout options for \"" + appenderName + "\"."); - //configureOptionHandler(layout, layoutPrefix + ".", props); PropertySetter.setProperties(layout, props, layoutPrefix + "."); + activateOptions(appender); LogLog.debug("End of parsing for \"" + appenderName + "\"."); } } - - //configureOptionHandler((OptionHandler) appender, prefix + ".", props); + PropertySetter.setProperties(appender, props, prefix + "."); + activateOptions(appender); LogLog.debug("Parsed \"" + appenderName + "\" options."); } @@ -707,6 +707,12 @@ return appender; } + + public void activateOptions(Object obj) { + if (obj instanceof OptionHandler) { + ((OptionHandler) obj).activateOptions(); + } + } void registryPut(Appender appender) { registry.put(appender.getName(), appender); 1.15 +10 -5 jakarta-log4j/src/java/org/apache/log4j/LogManager.java Index: LogManager.java =================================================================== RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/LogManager.java,v retrieving revision 1.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 --- LogManager.java 25 Jun 2003 16:50:24 -0000 1.14 +++ LogManager.java 17 Sep 2003 15:09:07 -0000 1.15 @@ -108,11 +108,8 @@ Hierarchy h = new Hierarchy(new RootCategory(Level.DEBUG)); repositorySelector = new DefaultRepositorySelector(h); - Logger logger = LogManager.getLoggerRepository().getLogger("LOG4J"); - logger.setAdditivity(false); - logger.addAppender( - new ConsoleAppender( - new PatternLayout("log4j-internal: %r %-22c{2} - %m%n"))); + // set appenders for the internal configuration + internalConf(); /** Search for the properties file log4j.properties in the CLASSPATH. */ String override = @@ -161,6 +158,14 @@ "Could not find resources to perform automatic configuration."); } } + } + + static void internalConf() { + Logger logger = getLoggerRepository().getLogger("LOG4J"); + logger.setAdditivity(false); + logger.addAppender( + new ConsoleAppender( + new PatternLayout("log4j-internal: %r %-22c{2} - %m%n"))); } /** 1.39 +1 -1 jakarta-log4j/tests/build.xml Index: build.xml =================================================================== RCS file: /home/cvs/jakarta-log4j/tests/build.xml,v retrieving revision 1.38 retrieving revision 1.39 diff -u -r1.38 -r1.39 --- build.xml 12 Sep 2003 17:43:01 -0000 1.38 +++ build.xml 17 Sep 2003 15:09:07 -0000 1.39 @@ -142,7 +142,7 @@ <junit printsummary="yes" fork="yes" haltonfailure="yes"> <classpath refid="tests.classpath"/> <formatter type="plain" usefile="false"/> - <test name="org.apache.log4j.PatternLayoutTestCase" /> + <test name="org.apache.log4j.PatternLayoutTest" /> </junit> </target> 1.18 +6 -1 jakarta-log4j/src/java/org/apache/log4j/config/PropertySetter.java Index: PropertySetter.java =================================================================== RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/config/PropertySetter.java,v retrieving revision 1.17 retrieving revision 1.18 diff -u -r1.17 -r1.18 --- PropertySetter.java 11 Sep 2003 17:00:42 -0000 1.17 +++ PropertySetter.java 17 Sep 2003 15:09:08 -0000 1.18 @@ -126,7 +126,12 @@ setProperty(key, value); } } - //activate(); + + + if (obj instanceof OptionHandler) { + ((OptionHandler) obj).activateOptions(); + } + } } /** 1.1 jakarta-log4j/tests/src/java/org/apache/log4j/PatternLayoutTest.java Index: PatternLayoutTest.java =================================================================== /* * ============================================================================ * The Apache Software License, Version 1.1 * ============================================================================ * * Copyright (C) 1999 The Apache Software Foundation. All rights reserved. * * Redistribution and use in source and binary forms, with or without modifica- * tion, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * 3. The end-user documentation included with the redistribution, if any, must * include the following acknowledgment: "This product includes software * developed by the Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, if * and wherever such third-party acknowledgments normally appear. * * 4. The names "log4j" and "Apache Software Foundation" must not be used to * endorse or promote products derived from this software without prior * written permission. For written permission, please contact * [EMAIL PROTECTED] * * 5. Products derived from this software may not be called "Apache", nor may * "Apache" appear in their name, without prior written permission of the * Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU- * DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * This software consists of voluntary contributions made by many individuals * on behalf of the Apache Software Foundation. For more information on the * Apache Software Foundation, please see <http://www.apache.org/>. * */ package org.apache.log4j; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.apache.log4j.MDC; import org.apache.log4j.util.AbsoluteDateAndTimeFilter; import org.apache.log4j.util.AbsoluteTimeFilter; import org.apache.log4j.util.Compare; import org.apache.log4j.util.ControlFilter; import org.apache.log4j.util.Filter; import org.apache.log4j.util.ISO8601Filter; import org.apache.log4j.util.LineNumberFilter; import org.apache.log4j.util.RelativeTimeFilter; import org.apache.log4j.util.SunReflectFilter; import org.apache.log4j.util.Transformer; public class PatternLayoutTest extends TestCase { static String TEMP = "output/temp"; static String FILTERED = "output/filtered"; static String EXCEPTION1 = "java.lang.Exception: Just testing"; static String EXCEPTION2 = "\\s*at .*\\(.*:\\d{1,4}\\)"; static String EXCEPTION3 = "\\s*at .*\\(Native Method\\)"; static String PAT0 = "\\[main]\\ (DEBUG|INFO|WARN|ERROR|FATAL) .* - Message \\d{1,2}"; static String PAT1 = Filter.ISO8601_PAT + " " + PAT0; static String PAT2 = Filter.ABSOLUTE_DATE_AND_TIME_PAT + " " + PAT0; static String PAT3 = Filter.ABSOLUTE_TIME_PAT + " " + PAT0; static String PAT4 = Filter.RELATIVE_TIME_PAT + " " + PAT0; static String PAT5 = "\\[main]\\ (DEBUG|INFO|WARN|ERROR|FATAL) .* : Message \\d{1,2}"; static String PAT6 = "\\[main]\\ (DEBUG|INFO |WARN |ERROR|FATAL) org.apache.log4j.PatternLayoutTestCase.common\\(PatternLayoutTestCase.java:\\d{1,4}\\): Message \\d{1,2}"; static String PAT11a = "^(DEBUG|INFO |WARN |ERROR|FATAL) \\[main]\\ log4j.PatternLayoutTestCase: Message \\d{1,2}"; static String PAT11b = "^(DEBUG|INFO |WARN |ERROR|FATAL) \\[main]\\ root: Message \\d{1,2}"; static String PAT12 = "^\\[main]\\ (DEBUG|INFO |WARN |ERROR|FATAL) " + "org.apache.log4j.PatternLayoutTestCase.common\\(PatternLayoutTestCase.java:\\d{3}\\): " + "Message \\d{1,2}"; static String PAT13 = "^\\[main]\\ (DEBUG|INFO |WARN |ERROR|FATAL) " + "apache.log4j.PatternLayoutTestCase.common\\(PatternLayoutTestCase.java:\\d{3}\\): " + "Message \\d{1,2}"; static String PAT14 = "^(DEBUG| INFO| WARN|ERROR|FATAL)\\ \\d{1,2}\\ *- Message \\d{1,2}"; static String PAT_MDC_1 = ""; Logger root; Logger logger; public PatternLayoutTest(String name) { super(name); } public void setUp() { root = Logger.getRootLogger(); logger = Logger.getLogger(PatternLayoutTest.class); } public void tearDown() { root.getLoggerRepository().resetConfiguration(); } public void test1() throws Exception { PropertyConfigurator.configure("input/patternLayout1.properties"); common(); Transformer.transform( TEMP, FILTERED, new Filter[] { new LineNumberFilter(), new SunReflectFilter() }); assertTrue(Compare.compare(FILTERED, "witness/patternLayout.1")); } public void test2() throws Exception { PropertyConfigurator.configure("input/patternLayout2.properties"); common(); ControlFilter cf1 = new ControlFilter( new String[] { PAT1, EXCEPTION1, EXCEPTION2, EXCEPTION3 }); Transformer.transform( TEMP, FILTERED, new Filter[] { cf1, new LineNumberFilter(), new ISO8601Filter(), new SunReflectFilter() }); assertTrue(Compare.compare(FILTERED, "witness/patternLayout.2")); } public void test3() throws Exception { PropertyConfigurator.configure("input/patternLayout3.properties"); common(); ControlFilter cf1 = new ControlFilter( new String[] { PAT1, EXCEPTION1, EXCEPTION2, EXCEPTION3 }); Transformer.transform( TEMP, FILTERED, new Filter[] { cf1, new LineNumberFilter(), new ISO8601Filter(), new SunReflectFilter() }); assertTrue(Compare.compare(FILTERED, "witness/patternLayout.3")); } // Output format: // 06 avr. 2002 18:30:58,937 [main] DEBUG rnLayoutTestCase - Message 0 public void test4() throws Exception { PropertyConfigurator.configure("input/patternLayout4.properties"); common(); ControlFilter cf1 = new ControlFilter( new String[] { PAT2, EXCEPTION1, EXCEPTION2, EXCEPTION3 }); Transformer.transform( TEMP, FILTERED, new Filter[] { cf1, new LineNumberFilter(), new AbsoluteDateAndTimeFilter(), new SunReflectFilter() }); assertTrue(Compare.compare(FILTERED, "witness/patternLayout.4")); } public void test5() throws Exception { PropertyConfigurator.configure("input/patternLayout5.properties"); common(); ControlFilter cf1 = new ControlFilter( new String[] { PAT2, EXCEPTION1, EXCEPTION2, EXCEPTION3 }); Transformer.transform( TEMP, FILTERED, new Filter[] { cf1, new LineNumberFilter(), new AbsoluteDateAndTimeFilter(), new SunReflectFilter() }); assertTrue(Compare.compare(FILTERED, "witness/patternLayout.5")); } // 18:54:19,201 [main] DEBUG rnLayoutTestCase - Message 0 public void test6() throws Exception { PropertyConfigurator.configure("input/patternLayout6.properties"); common(); ControlFilter cf1 = new ControlFilter( new String[] { PAT3, EXCEPTION1, EXCEPTION2, EXCEPTION3 }); Transformer.transform( TEMP, FILTERED, new Filter[] { cf1, new LineNumberFilter(), new AbsoluteTimeFilter(), new SunReflectFilter() }); assertTrue(Compare.compare(FILTERED, "witness/patternLayout.6")); } public void test7() throws Exception { PropertyConfigurator.configure("input/patternLayout7.properties"); common(); ControlFilter cf1 = new ControlFilter( new String[] { PAT3, EXCEPTION1, EXCEPTION2, EXCEPTION3 }); Transformer.transform( TEMP, FILTERED, new Filter[] { cf1, new LineNumberFilter(), new AbsoluteTimeFilter(), new SunReflectFilter() }); assertTrue(Compare.compare(FILTERED, "witness/patternLayout.7")); } public void test8() throws Exception { PropertyConfigurator.configure("input/patternLayout8.properties"); common(); ControlFilter cf1 = new ControlFilter( new String[] { PAT4, EXCEPTION1, EXCEPTION2, EXCEPTION3 }); Transformer.transform( TEMP, FILTERED, new Filter[] { cf1, new LineNumberFilter(), new RelativeTimeFilter(), new SunReflectFilter() }); assertTrue(Compare.compare(FILTERED, "witness/patternLayout.8")); } public void test9() throws Exception { PropertyConfigurator.configure("input/patternLayout9.properties"); common(); ControlFilter cf1 = new ControlFilter( new String[] { PAT5, EXCEPTION1, EXCEPTION2, EXCEPTION3 }); Transformer.transform( TEMP, FILTERED, new Filter[] { cf1, new LineNumberFilter(), new SunReflectFilter() }); assertTrue(Compare.compare(FILTERED, "witness/patternLayout.9")); } public void test10() throws Exception { PropertyConfigurator.configure("input/patternLayout10.properties"); common(); ControlFilter cf1 = new ControlFilter( new String[] { PAT6, EXCEPTION1, EXCEPTION2, EXCEPTION3 }); Transformer.transform( TEMP, FILTERED, new Filter[] { cf1, new LineNumberFilter(), new SunReflectFilter() }); assertTrue(Compare.compare(FILTERED, "witness/patternLayout.10")); } public void test11() throws Exception { PropertyConfigurator.configure("input/patternLayout11.properties"); common(); ControlFilter cf1 = new ControlFilter( new String[] { PAT11a, PAT11b, EXCEPTION1, EXCEPTION2, EXCEPTION3 }); Transformer.transform( TEMP, FILTERED, new Filter[] { cf1, new LineNumberFilter(), new SunReflectFilter() }); assertTrue(Compare.compare(FILTERED, "witness/patternLayout.11")); } public void test12() throws Exception { PropertyConfigurator.configure("input/patternLayout12.properties"); common(); ControlFilter cf1 = new ControlFilter( new String[] { PAT12, EXCEPTION1, EXCEPTION2, EXCEPTION3 }); Transformer.transform( TEMP, FILTERED, new Filter[] { cf1, new LineNumberFilter(), new SunReflectFilter() }); assertTrue(Compare.compare(FILTERED, "witness/patternLayout.12")); } public void test13() throws Exception { PropertyConfigurator.configure("input/patternLayout13.properties"); common(); ControlFilter cf1 = new ControlFilter( new String[] { PAT13, EXCEPTION1, EXCEPTION2, EXCEPTION3 }); Transformer.transform( TEMP, FILTERED, new Filter[] { cf1, new LineNumberFilter(), new SunReflectFilter() }); assertTrue(Compare.compare(FILTERED, "witness/patternLayout.13")); } public void test14() throws Exception { PropertyConfigurator.configure("input/patternLayout14.properties"); common(); ControlFilter cf1 = new ControlFilter( new String[] { PAT14, EXCEPTION1, EXCEPTION2, EXCEPTION3 }); Transformer.transform( TEMP, FILTERED, new Filter[] { cf1, new LineNumberFilter(), new SunReflectFilter() }); assertTrue(Compare.compare(FILTERED, "witness/patternLayout.14")); } public void testMDCAllowAllKeys() throws Exception { PropertyConfigurator.configure("input/patternLayout.mdc.1.properties"); MDC.put("key1", "va11"); MDC.put("key2", "va12"); logger.debug("Hello World"); MDC.clear(); Transformer.transform( TEMP, FILTERED, new Filter[] { new LineNumberFilter(), new SunReflectFilter() }); assertTrue(Compare.compare(FILTERED, "witness/patternLayout.mdc.1")); } void common() { int i = -1; logger.debug("Message " + ++i); root.debug("Message " + i); logger.info("Message " + ++i); root.info("Message " + i); logger.warn("Message " + ++i); root.warn("Message " + i); logger.error("Message " + ++i); root.error("Message " + i); logger.log(Level.FATAL, "Message " + ++i); root.log(Level.FATAL, "Message " + i); Exception e = new Exception("Just testing"); logger.debug("Message " + ++i, e); logger.info("Message " + ++i, e); logger.warn("Message " + ++i, e); logger.error("Message " + ++i, e); logger.log(Level.FATAL, "Message " + ++i, e); } public static Test suite() { TestSuite suite = new TestSuite(); suite.addTest(new PatternLayoutTest("test1")); /*suite.addTest(new PatternLayoutTest("test2")); suite.addTest(new PatternLayoutTest("test3")); suite.addTest(new PatternLayoutTest("test4")); suite.addTest(new PatternLayoutTest("test5")); suite.addTest(new PatternLayoutTest("test6")); suite.addTest(new PatternLayoutTest("test7")); suite.addTest(new PatternLayoutTest("test8")); suite.addTest(new PatternLayoutTest("test9")); suite.addTest(new PatternLayoutTest("test10")); suite.addTest(new PatternLayoutTest("test11")); suite.addTest(new PatternLayoutTest("test12")); suite.addTest(new PatternLayoutTest("test13")); suite.addTest(new PatternLayoutTest("test14")); suite.addTest(new PatternLayoutTest("testMDCAllowAllKeys")); */ return suite; } } 1.4 +0 -3 jakarta-log4j/tests/src/java/org/apache/log4j/helpers/BoundedFIFOTestCase.java Index: BoundedFIFOTestCase.java =================================================================== RCS file: /home/cvs/jakarta-log4j/tests/src/java/org/apache/log4j/helpers/BoundedFIFOTestCase.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- BoundedFIFOTestCase.java 12 Sep 2003 18:24:26 -0000 1.3 +++ BoundedFIFOTestCase.java 17 Sep 2003 15:09:08 -0000 1.4 @@ -55,10 +55,7 @@ // http://www.junit.org package org.apache.log4j.helpers; -import junit.framework.Test; import junit.framework.TestCase; -import junit.framework.TestSuite; - import org.apache.log4j.Category; import org.apache.log4j.Priority; import org.apache.log4j.helpers.BoundedFIFO;
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]