carnold 2005/03/06 21:35:19
Modified: src/java/org/apache/log4j/xml DOMConfigurator.java
tests/src/java/org/apache/log4j/xml DOMTest.java
Added: tests/input/xml DOMTest3.xml
tests/witness/xml dom.A1.3 dom.A2.3
Log:
Bug 33870: Restore DOMConfigurator.doConfigure(Element)
Revision Changes Path
1.73 +125 -8
logging-log4j/src/java/org/apache/log4j/xml/DOMConfigurator.java
Index: DOMConfigurator.java
===================================================================
RCS file:
/home/cvs/logging-log4j/src/java/org/apache/log4j/xml/DOMConfigurator.java,v
retrieving revision 1.72
retrieving revision 1.73
diff -u -r1.72 -r1.73
--- DOMConfigurator.java 9 Jan 2005 13:04:17 -0000 1.72
+++ DOMConfigurator.java 7 Mar 2005 05:35:18 -0000 1.73
@@ -1,12 +1,12 @@
/*
- * Copyright 1999,2004 The Apache Software Foundation.
- *
+ * Copyright 1999,2005 The Apache Software Foundation.
+ *
* Licensed 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.
@@ -16,14 +16,26 @@
package org.apache.log4j.xml;
+import org.apache.log4j.LogManager;
+import org.apache.log4j.joran.JoranConfigurator;
+import org.apache.log4j.spi.LoggerRepository;
+
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.AttributesImpl;
+import org.xml.sax.helpers.DefaultHandler;
+
import java.net.URL;
-import org.apache.log4j.*;
-import org.apache.log4j.joran.JoranConfigurator;
+import javax.xml.parsers.SAXParser;
// Contributors: Mark Womack
-// Arun Katkere
+// Arun Katkere
+// Curt Arnold
/**
Use this class to initialize the log4j environment using a DOM tree.
@@ -50,7 +62,6 @@
@deprecated Replaced by the much more flexible [EMAIL PROTECTED]
org.apache.log4j.joran.JoranConfigurator}.
@since 0.8.3 */
public class DOMConfigurator extends JoranConfigurator {
-
public static void configure(String file) {
JoranConfigurator joran = new JoranConfigurator();
joran.doConfigure(file, LogManager.getLoggerRepository());
@@ -60,4 +71,110 @@
JoranConfigurator joran = new JoranConfigurator();
joran.doConfigure(url, LogManager.getLoggerRepository());
}
+
+ /**
+ * Configure log4j using a <code>configuration</code> element.
+ * @param element element, may not be null.
+ */
+ public static void configure(final Element element) {
+ DOMConfigurator configurator = new DOMConfigurator();
+ configurator.doConfigure(element, LogManager.getLoggerRepository());
+ }
+
+ /**
+ * Configure by taking in an DOM element.
+ * @param element configuration element, may not be null.
+ * @param repository logger repository.
+ */
+ public void doConfigure(
+ final Element element, final LoggerRepository repository) {
+ ParseAction action = new DOMElementParseAction(element);
+ doConfigure(action, repository);
+ }
+
+ /**
+ * Class that "parses" a DOM element by replaying the
+ * corresponding SAX events.
+ */
+ private static class DOMElementParseAction implements ParseAction {
+ private final Element element;
+ private final AttributesImpl attributes = new AttributesImpl();
+
+ /**
+ * Creates an DOMElementParser.
+ * @param element configuration element.
+ */
+ public DOMElementParseAction(final Element element) {
+ this.element = element;
+ }
+
+ /**
+ * Generates the SAX events corresponding to the document element.
+ * @param parser SAX parser, ignored.
+ * @param handler content receiver, may not be null.
+ * @throws SAXException thrown on content or handling exception.
+ */
+ public void parse(final SAXParser parser, final DefaultHandler handler)
+ throws SAXException {
+ handler.startDocument();
+ replay(element, handler);
+ handler.endDocument();
+ }
+
+ /**
+ * Generates the SAX events corresponding to the element.
+ *
+ * @param element element, may not be null.
+ * @param handler content handler, may not be null.
+ * @throws SAXException if content error.
+ */
+ private void replay(final Element element, final DefaultHandler handler)
+ throws SAXException {
+ String localName = element.getLocalName();
+ String nsURI = element.getNamespaceURI();
+ String qName = element.getNodeName();
+
+ if (localName == null) {
+ localName = qName;
+ }
+
+ attributes.clear();
+
+ NamedNodeMap attrNodes = element.getAttributes();
+ int attrCount = attrNodes.getLength();
+ Node attr;
+
+ for (int i = 0; i < attrCount; i++) {
+ attr = attrNodes.item(i);
+
+ String attrQName = attr.getNodeName();
+ String attrName = attr.getLocalName();
+
+ if (attrName == null) {
+ attrName = attrQName;
+ }
+
+ String attrNsURI = attr.getNamespaceURI();
+ String attrValue = attr.getNodeValue();
+ attributes.addAttribute(
+ attrNsURI, attrName, attrQName, "#PCDATA", attrValue);
+ }
+
+ handler.startElement(nsURI, localName, qName, attributes);
+
+ for (
+ Node child = element.getFirstChild(); child != null;
+ child = child.getNextSibling()) {
+ //
+ // Joran only inteprets element content,
+ // so unnecessary to playback comments, character data, etc.
+ //
+ if (child.getNodeType() == Node.ELEMENT_NODE) {
+ replay((Element) child, handler);
+ }
+ }
+
+ handler.endElement(nsURI, localName, qName);
+ }
+ }
}
1.1 logging-log4j/tests/input/xml/DOMTest3.xml
Index: DOMTest3.xml
===================================================================
<?xml version="1.0" encoding="UTF-8" ?>
<log4j:configuration xmlns:log4j='http://logging.apache.org/'>
<appender name="A1" class="org.apache.log4j.FileAppender">
<param name="File" value="output/temp.A1.3" />
<param name="Append" value="false" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p %c{2} - %m%n"/>
</layout>
</appender>
<appender name="A2" class="org.apache.log4j.FileAppender">
<param name="File" value="output/temp.A2.3" />
<param name="Append" value="false" />
<layout class="org.apache.log4j.TTCCLayout">
<param name="DateFormat" value="ISO8601" />
</layout>
</appender>
<!-- Prevent internal log4j DEBUG messages from polluting the output. -->
<logger name="org.apache.log4j.joran"><level value="INFO" /></logger>
<logger name="org.apache.log4j.joran.action.PriorityAction"><level
value="ERROR" /></logger>
<logger name="org.apache.log4j.config"><level value="INFO" /></logger>
<logger name="org.apache.log4j.FileAppender"><level value="INFO" /></logger>
<logger name="org.apache.log4j.xml.DOMConfigurator"><level value="INFO"
/></logger>
<logger name="org.apache.log4j.xml">
<level value="debug" />
<appender-ref ref="A1" />
</logger>
<root>
<priority value ="debug" />
<appender-ref ref="A1" />
<appender-ref ref="A2" />
</root>
</log4j:configuration>
1.2 +150 -99
logging-log4j/tests/src/java/org/apache/log4j/xml/DOMTest.java
Index: DOMTest.java
===================================================================
RCS file:
/home/cvs/logging-log4j/tests/src/java/org/apache/log4j/xml/DOMTest.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- DOMTest.java 18 Feb 2005 17:23:45 -0000 1.1
+++ DOMTest.java 7 Mar 2005 05:35:19 -0000 1.2
@@ -1,12 +1,12 @@
/*
- * Copyright 1999-2005 The Apache Software Foundation.
- *
+ * Copyright 1999,2005 The Apache Software Foundation.
+ *
* Licensed 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.
@@ -16,50 +16,39 @@
package org.apache.log4j.xml;
-import java.util.List;
-
-import junit.framework.Test;
import junit.framework.TestCase;
-import junit.framework.TestSuite;
+import org.apache.log4j.Level;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
-import org.apache.log4j.Level;
import org.apache.log4j.joran.JoranConfigurator;
import org.apache.log4j.spi.ErrorItem;
-import org.apache.log4j.util.Filter;
-import org.apache.log4j.util.JunitTestRunnerFilter;
-import org.apache.log4j.util.LineNumberFilter;
-import org.apache.log4j.util.SunReflectFilter;
-import org.apache.log4j.util.ControlFilter;
-import org.apache.log4j.util.ISO8601Filter;
-import org.apache.log4j.util.Transformer;
-import org.apache.log4j.util.Compare;
+import org.apache.log4j.util.*;
+
import java.io.File;
-public class DOMTest extends TestCase {
+import java.util.List;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+public class DOMTest extends TestCase {
static String TEMP_A1 = "output/temp.A1";
static String TEMP_A2 = "output/temp.A2";
static String FILTERED_A1 = "output/filtered.A1";
static String FILTERED_A2 = "output/filtered.A2";
-
-
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 TEST1_1A_PAT =
- "(DEBUG|INFO |WARN |ERROR|FATAL) \\w*\\.\\w* -
Message \\d";
-
- static String TEST1_1B_PAT = "(DEBUG|INFO |WARN |ERROR|FATAL) root -
Message \\d";
-
- static String TEST1_2_PAT = "^\\d{4}-\\d{2}-\\d{2}
\\d{2}:\\d{2}:\\d{2},\\d{3} "+
- "\\[main]\\ (DEBUG|INFO|WARN|ERROR|FATAL) .* -
Message \\d";
-
-
-
- Logger root;
+ static String TEST1_1A_PAT =
+ "(DEBUG|INFO |WARN |ERROR|FATAL) \\w*\\.\\w* - Message \\d";
+ static String TEST1_1B_PAT =
+ "(DEBUG|INFO |WARN |ERROR|FATAL) root - Message \\d";
+ static String TEST1_2_PAT =
+ "^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2},\\d{3} "
+ + "\\[main]\\ (DEBUG|INFO|WARN|ERROR|FATAL) .* - Message \\d";
+ Logger root;
Logger logger;
public DOMTest(String name) {
@@ -70,8 +59,8 @@
root = Logger.getRootLogger();
logger = Logger.getLogger(DOMTest.class);
}
-
- public void tearDown() {
+
+ public void tearDown() {
root.getLoggerRepository().resetConfiguration();
}
@@ -82,20 +71,29 @@
dumpErrors(jc.getErrorList());
common();
- ControlFilter cf1 = new ControlFilter(new String[]{TEST1_1A_PAT,
TEST1_1B_PAT,
- EXCEPTION1, EXCEPTION2,
EXCEPTION3});
-
- ControlFilter cf2 = new ControlFilter(new String[]{TEST1_2_PAT,
- EXCEPTION1, EXCEPTION2,
EXCEPTION3});
-
- Transformer.transform(TEMP_A1, FILTERED_A1, new Filter[] {cf1,
- new LineNumberFilter(),
- new SunReflectFilter(),
- new JunitTestRunnerFilter()});
-
- Transformer.transform(TEMP_A2, FILTERED_A2, new Filter[] {cf2,
- new LineNumberFilter(), new
ISO8601Filter(),
- new SunReflectFilter(), new
JunitTestRunnerFilter()});
+ ControlFilter cf1 =
+ new ControlFilter(
+ new String[] {
+ TEST1_1A_PAT, TEST1_1B_PAT, EXCEPTION1, EXCEPTION2, EXCEPTION3
+ });
+
+ ControlFilter cf2 =
+ new ControlFilter(
+ new String[] { TEST1_2_PAT, EXCEPTION1, EXCEPTION2, EXCEPTION3 });
+
+ Transformer.transform(
+ TEMP_A1, FILTERED_A1,
+ new Filter[] {
+ cf1, new LineNumberFilter(), new SunReflectFilter(),
+ new JunitTestRunnerFilter()
+ });
+
+ Transformer.transform(
+ TEMP_A2, FILTERED_A2,
+ new Filter[] {
+ cf2, new LineNumberFilter(), new ISO8601Filter(),
+ new SunReflectFilter(), new JunitTestRunnerFilter()
+ });
assertTrue(Compare.compare(FILTERED_A1, "witness/xml/dom.A1.1"));
assertTrue(Compare.compare(FILTERED_A2, "witness/xml/dom.A2.1"));
@@ -103,82 +101,135 @@
/**
* Identical test except that backslashes are used instead of
- * forward slashes on all file specifications. Test is
+ * forward slashes on all file specifications. Test is
* only applicable to Windows.
- *
+ *
* @throws Exception Any exception will cause test to fail
*/
public void test2() throws Exception {
- if (File.separatorChar == '\\') {
- JoranConfigurator jc = new JoranConfigurator();
- jc.doConfigure("input\\xml\\DOMTest2.xml",
LogManager.getLoggerRepository());
- dumpErrors(jc.getErrorList());
- common();
-
- ControlFilter cf1 = new ControlFilter(new String[]{TEST1_1A_PAT,
TEST1_1B_PAT,
- EXCEPTION1, EXCEPTION2,
EXCEPTION3});
-
- ControlFilter cf2 = new ControlFilter(new String[]{TEST1_2_PAT,
- EXCEPTION1, EXCEPTION2,
EXCEPTION3});
-
- Transformer.transform(TEMP_A1 + ".2", FILTERED_A1 + ".2", new
Filter[] {cf1,
- new
LineNumberFilter(),
- new SunReflectFilter(),
- new JunitTestRunnerFilter()});
-
- Transformer.transform(TEMP_A2 + ".2", FILTERED_A2 + ".2", new
Filter[] {cf2,
- new LineNumberFilter(), new
ISO8601Filter(),
- new SunReflectFilter(), new
JunitTestRunnerFilter()});
-
- assertTrue(Compare.compare(FILTERED_A1, "witness/xml/dom.A1.2"));
- assertTrue(Compare.compare(FILTERED_A2, "witness/xml/dom.A2.2"));
- }
- }
-
-
-
+ if (File.separatorChar == '\\') {
+ JoranConfigurator jc = new JoranConfigurator();
+ jc.doConfigure(
+ "input\\xml\\DOMTest2.xml", LogManager.getLoggerRepository());
+ dumpErrors(jc.getErrorList());
+ common();
+
+ ControlFilter cf1 =
+ new ControlFilter(
+ new String[] {
+ TEST1_1A_PAT, TEST1_1B_PAT, EXCEPTION1, EXCEPTION2, EXCEPTION3
+ });
+
+ ControlFilter cf2 =
+ new ControlFilter(
+ new String[] { TEST1_2_PAT, EXCEPTION1, EXCEPTION2, EXCEPTION3 });
+
+ Transformer.transform(
+ TEMP_A1 + ".2", FILTERED_A1 + ".2",
+ new Filter[] {
+ cf1, new LineNumberFilter(), new SunReflectFilter(),
+ new JunitTestRunnerFilter()
+ });
+
+ Transformer.transform(
+ TEMP_A2 + ".2", FILTERED_A2 + ".2",
+ new Filter[] {
+ cf2, new LineNumberFilter(), new ISO8601Filter(),
+ new SunReflectFilter(), new JunitTestRunnerFilter()
+ });
+
+ assertTrue(Compare.compare(FILTERED_A1 + ".2",
"witness/xml/dom.A1.2"));
+ assertTrue(Compare.compare(FILTERED_A2 + ".2",
"witness/xml/dom.A2.2"));
+ }
+ }
+
+ /**
+ * This test checks the implementation of
DOMConfigurator.doConfigure(Element)
+ * which is provided for compatibility with log4j 1.2 and used by
excalibur-logging.
+ *
+ * @deprecated This test checks a deprecated method and so needs to be
deprecated itself.
+ *
+ * @throws Exception on failure to find parser, etc.
+ */
+ public void test3() throws Exception {
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+ factory.setNamespaceAware(true);
+
+ DocumentBuilder builder = factory.newDocumentBuilder();
+ org.w3c.dom.Document doc =
+ builder.parse(new File("input/xml/DOMTest3.xml"));
+
+ DOMConfigurator domConfig = new DOMConfigurator();
+ domConfig.doConfigure(
+ doc.getDocumentElement(), LogManager.getLoggerRepository());
+
+ dumpErrors(domConfig.getErrorList());
+ common();
+
+ ControlFilter cf1 =
+ new ControlFilter(
+ new String[] {
+ TEST1_1A_PAT, TEST1_1B_PAT, EXCEPTION1, EXCEPTION2, EXCEPTION3
+ });
+
+ ControlFilter cf2 =
+ new ControlFilter(
+ new String[] { TEST1_2_PAT, EXCEPTION1, EXCEPTION2, EXCEPTION3 });
+
+ Transformer.transform(
+ TEMP_A1 + ".3", FILTERED_A1 + ".3",
+ new Filter[] {
+ cf1, new LineNumberFilter(), new SunReflectFilter(),
+ new JunitTestRunnerFilter()
+ });
+
+ Transformer.transform(
+ TEMP_A2 + ".3", FILTERED_A2 + ".3",
+ new Filter[] {
+ cf2, new LineNumberFilter(), new ISO8601Filter(),
+ new SunReflectFilter(), new JunitTestRunnerFilter()
+ });
+
+ assertTrue(Compare.compare(FILTERED_A1 + ".3", "witness/xml/dom.A1.3"));
+ assertTrue(Compare.compare(FILTERED_A2 + ".3", "witness/xml/dom.A2.3"));
+ }
+
void common() {
int i = -1;
-
+
logger.debug("Message " + ++i);
- root.debug("Message " + i);
+ root.debug("Message " + i);
- logger.info ("Message " + ++i);
- root.info("Message " + i);
+ logger.info("Message " + ++i);
+ root.info("Message " + i);
- logger.warn ("Message " + ++i);
- root.warn("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);
-
+ root.log(Level.FATAL, "Message " + i);
+
Exception e = new Exception("Just testing");
logger.debug("Message " + ++i, e);
root.debug("Message " + i, e);
-
+
logger.error("Message " + ++i, e);
- root.error("Message " + i, e);
+ root.error("Message " + i, e);
}
void dumpErrors(List errorList) {
- for(int i = 0; i < errorList.size(); i++) {
+ for (int i = 0; i < errorList.size(); i++) {
ErrorItem ei = (ErrorItem) errorList.get(i);
System.out.println(ei);
+
Throwable t = ei.getException();
- if(t != null) {
+
+ if (t != null) {
t.printStackTrace(System.out);
}
}
}
-
- public static Test suite() {
- TestSuite suite = new TestSuite();
- suite.addTest(new DOMTest("test1"));
- //suite.addTest(new DOMTest("test2"));
- return suite;
- }
-
}
1.1 logging-log4j/tests/witness/xml/dom.A1.3
Index: dom.A1.3
===================================================================
DEBUG xml.DOMTest - Message 0
DEBUG xml.DOMTest - Message 0
DEBUG root - Message 0
INFO xml.DOMTest - Message 1
INFO xml.DOMTest - Message 1
INFO root - Message 1
WARN xml.DOMTest - Message 2
WARN xml.DOMTest - Message 2
WARN root - Message 2
ERROR xml.DOMTest - Message 3
ERROR xml.DOMTest - Message 3
ERROR root - Message 3
FATAL xml.DOMTest - Message 4
FATAL xml.DOMTest - Message 4
FATAL root - Message 4
DEBUG xml.DOMTest - Message 5
java.lang.Exception: Just testing
at org.apache.log4j.xml.DOMTest.common(X)
at org.apache.log4j.xml.DOMTest.test3(X)
at java.lang.reflect.Method.invoke(X)
at junit.framework.TestCase.runTest(X)
at junit.framework.TestCase.runBare(X)
at junit.framework.TestResult$1.protect(X)
at junit.framework.TestResult.runProtected(X)
at junit.framework.TestResult.run(X)
at junit.framework.TestCase.run(X)
at junit.framework.TestSuite.runTest(X)
at junit.framework.TestSuite.run(X)
DEBUG xml.DOMTest - Message 5
java.lang.Exception: Just testing
at org.apache.log4j.xml.DOMTest.common(X)
at org.apache.log4j.xml.DOMTest.test3(X)
at java.lang.reflect.Method.invoke(X)
at junit.framework.TestCase.runTest(X)
at junit.framework.TestCase.runBare(X)
at junit.framework.TestResult$1.protect(X)
at junit.framework.TestResult.runProtected(X)
at junit.framework.TestResult.run(X)
at junit.framework.TestCase.run(X)
at junit.framework.TestSuite.runTest(X)
at junit.framework.TestSuite.run(X)
DEBUG root - Message 5
java.lang.Exception: Just testing
at org.apache.log4j.xml.DOMTest.common(X)
at org.apache.log4j.xml.DOMTest.test3(X)
at java.lang.reflect.Method.invoke(X)
at junit.framework.TestCase.runTest(X)
at junit.framework.TestCase.runBare(X)
at junit.framework.TestResult$1.protect(X)
at junit.framework.TestResult.runProtected(X)
at junit.framework.TestResult.run(X)
at junit.framework.TestCase.run(X)
at junit.framework.TestSuite.runTest(X)
at junit.framework.TestSuite.run(X)
ERROR xml.DOMTest - Message 6
java.lang.Exception: Just testing
at org.apache.log4j.xml.DOMTest.common(X)
at org.apache.log4j.xml.DOMTest.test3(X)
at java.lang.reflect.Method.invoke(X)
at junit.framework.TestCase.runTest(X)
at junit.framework.TestCase.runBare(X)
at junit.framework.TestResult$1.protect(X)
at junit.framework.TestResult.runProtected(X)
at junit.framework.TestResult.run(X)
at junit.framework.TestCase.run(X)
at junit.framework.TestSuite.runTest(X)
at junit.framework.TestSuite.run(X)
ERROR xml.DOMTest - Message 6
java.lang.Exception: Just testing
at org.apache.log4j.xml.DOMTest.common(X)
at org.apache.log4j.xml.DOMTest.test3(X)
at java.lang.reflect.Method.invoke(X)
at junit.framework.TestCase.runTest(X)
at junit.framework.TestCase.runBare(X)
at junit.framework.TestResult$1.protect(X)
at junit.framework.TestResult.runProtected(X)
at junit.framework.TestResult.run(X)
at junit.framework.TestCase.run(X)
at junit.framework.TestSuite.runTest(X)
at junit.framework.TestSuite.run(X)
ERROR root - Message 6
java.lang.Exception: Just testing
at org.apache.log4j.xml.DOMTest.common(X)
at org.apache.log4j.xml.DOMTest.test3(X)
at java.lang.reflect.Method.invoke(X)
at junit.framework.TestCase.runTest(X)
at junit.framework.TestCase.runBare(X)
at junit.framework.TestResult$1.protect(X)
at junit.framework.TestResult.runProtected(X)
at junit.framework.TestResult.run(X)
at junit.framework.TestCase.run(X)
at junit.framework.TestSuite.runTest(X)
at junit.framework.TestSuite.run(X)
1.1 logging-log4j/tests/witness/xml/dom.A2.3
Index: dom.A2.3
===================================================================
[main] DEBUG org.apache.log4j.xml.DOMTest - Message 0
[main] DEBUG root - Message 0
[main] INFO org.apache.log4j.xml.DOMTest - Message 1
[main] INFO root - Message 1
[main] WARN org.apache.log4j.xml.DOMTest - Message 2
[main] WARN root - Message 2
[main] ERROR org.apache.log4j.xml.DOMTest - Message 3
[main] ERROR root - Message 3
[main] FATAL org.apache.log4j.xml.DOMTest - Message 4
[main] FATAL root - Message 4
[main] DEBUG org.apache.log4j.xml.DOMTest - Message 5
java.lang.Exception: Just testing
at org.apache.log4j.xml.DOMTest.common(X)
at org.apache.log4j.xml.DOMTest.test3(X)
at java.lang.reflect.Method.invoke(X)
at junit.framework.TestCase.runTest(X)
at junit.framework.TestCase.runBare(X)
at junit.framework.TestResult$1.protect(X)
at junit.framework.TestResult.runProtected(X)
at junit.framework.TestResult.run(X)
at junit.framework.TestCase.run(X)
at junit.framework.TestSuite.runTest(X)
at junit.framework.TestSuite.run(X)
[main] DEBUG root - Message 5
java.lang.Exception: Just testing
at org.apache.log4j.xml.DOMTest.common(X)
at org.apache.log4j.xml.DOMTest.test3(X)
at java.lang.reflect.Method.invoke(X)
at junit.framework.TestCase.runTest(X)
at junit.framework.TestCase.runBare(X)
at junit.framework.TestResult$1.protect(X)
at junit.framework.TestResult.runProtected(X)
at junit.framework.TestResult.run(X)
at junit.framework.TestCase.run(X)
at junit.framework.TestSuite.runTest(X)
at junit.framework.TestSuite.run(X)
[main] ERROR org.apache.log4j.xml.DOMTest - Message 6
java.lang.Exception: Just testing
at org.apache.log4j.xml.DOMTest.common(X)
at org.apache.log4j.xml.DOMTest.test3(X)
at java.lang.reflect.Method.invoke(X)
at junit.framework.TestCase.runTest(X)
at junit.framework.TestCase.runBare(X)
at junit.framework.TestResult$1.protect(X)
at junit.framework.TestResult.runProtected(X)
at junit.framework.TestResult.run(X)
at junit.framework.TestCase.run(X)
at junit.framework.TestSuite.runTest(X)
at junit.framework.TestSuite.run(X)
[main] ERROR root - Message 6
java.lang.Exception: Just testing
at org.apache.log4j.xml.DOMTest.common(X)
at org.apache.log4j.xml.DOMTest.test3(X)
at java.lang.reflect.Method.invoke(X)
at junit.framework.TestCase.runTest(X)
at junit.framework.TestCase.runBare(X)
at junit.framework.TestResult$1.protect(X)
at junit.framework.TestResult.runProtected(X)
at junit.framework.TestResult.run(X)
at junit.framework.TestCase.run(X)
at junit.framework.TestSuite.runTest(X)
at junit.framework.TestSuite.run(X)
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]