You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by Ceki Gülcü <ce...@qos.ch> on 2003/10/19 16:25:29 UTC
Re: Patch fix for Bug 23705 (Parser gets confused when using
external entities.)
Is Tiger available for testing?
At 01:20 AM 10/17/2003 -0700, you wrote:
>I have modified DOMConfigurator and
>Log4jEntityResolver, and added a new testcase to
>demonstrate that the problem is fixed.
>
>Hope this is useful,
>Tim
>
>__________________________________
>Do you Yahoo!?
>The New Yahoo! Shopping - with improved product search
>http://shopping.yahoo.com
>Index: src/java/org/apache/log4j/Category.java
>===================================================================
>RCS file:
>/home/cvspublic/jakarta-log4j/src/java/org/apache/log4j/Category.java,v
>retrieving revision 1.77
>diff -u -r1.77 Category.java
>--- src/java/org/apache/log4j/Category.java 23 Aug 2003 16:00:52
>-0000 1.77
>+++ src/java/org/apache/log4j/Category.java 17 Oct 2003 07:39:23 -0000
>@@ -272,15 +272,11 @@
> * @since 1.0
> */
> void closeNestedAppenders() {
>- Enumeration enum = this.getAllAppenders();
>-
>- if (enum != null) {
>- while (enum.hasMoreElements()) {
>- Appender a = (Appender) enum.nextElement();
>-
>- if (a instanceof AppenderAttachable) {
>- a.close();
>- }
>+ for (Enumeration e = this.getAllAppenders();
>+ (e != null) && (e.hasMoreElements()); ) {
>+ Appender a = (Appender) e.nextElement();
>+ if (a instanceof AppenderAttachable) {
>+ a.close();
> }
> }
> }
>Index: src/java/org/apache/log4j/NDC.java
>===================================================================
>RCS file: /home/cvspublic/jakarta-log4j/src/java/org/apache/log4j/NDC.java,v
>retrieving revision 1.16
>diff -u -r1.16 NDC.java
>--- src/java/org/apache/log4j/NDC.java 23 Aug 2003 16:00:52 -0000 1.16
>+++ src/java/org/apache/log4j/NDC.java 17 Oct 2003 07:39:24 -0000
>@@ -265,15 +265,13 @@
> int misses = 0;
> v = new Vector();
>
>- Enumeration enum = ht.keys();
>-
> // We give up after 4 straigt missses. That is 4 consecutive
> // inspected threads in 'ht' that turn out to be alive.
> // The higher the proportion on dead threads in ht, the higher the
> // chances of removal.
>- while (enum.hasMoreElements() && (misses <= 4)) {
>- Thread t = (Thread) enum.nextElement();
>-
>+ for (Enumeration e = ht.keys();
>+ e.hasMoreElements() && (misses <= 4); ) {
>+ Thread t = (Thread) e.nextElement();
> if (t.isAlive()) {
> misses++;
> } else {
>Index: src/java/org/apache/log4j/PropertyConfigurator.java
>===================================================================
>RCS file:
>/home/cvspublic/jakarta-log4j/src/java/org/apache/log4j/PropertyConfigurator.java,v
>retrieving revision 1.60
>diff -u -r1.60 PropertyConfigurator.java
>--- src/java/org/apache/log4j/PropertyConfigurator.java 17 Sep 2003
>16:03:02 -0000 1.60
>+++ src/java/org/apache/log4j/PropertyConfigurator.java 17 Oct 2003
>07:39:24 -0000
>@@ -541,10 +541,9 @@
> */
> protected void parseCatsAndRenderers(
> Properties props, LoggerRepository hierarchy) {
>- Enumeration enum = props.propertyNames();
>
>- while (enum.hasMoreElements()) {
>- String key = (String) enum.nextElement();
>+ for (Enumeration e = props.propertyNames(); e.hasMoreElements();) {
>+ String key = (String) e.nextElement();
>
> if (key.startsWith(CATEGORY_PREFIX) ||
> key.startsWith(LOGGER_PREFIX)) {
> String loggerName = null;
>Index: src/java/org/apache/log4j/jmx/LoggerDynamicMBean.java
>===================================================================
>RCS file:
>/home/cvspublic/jakarta-log4j/src/java/org/apache/log4j/jmx/LoggerDynamicMBean.java,v
>retrieving revision 1.3
>diff -u -r1.3 LoggerDynamicMBean.java
>--- src/java/org/apache/log4j/jmx/LoggerDynamicMBean.java 18 Mar
>2003 13:33:33 -0000 1.3
>+++ src/java/org/apache/log4j/jmx/LoggerDynamicMBean.java 17 Oct
>2003 07:39:25 -0000
>@@ -228,9 +228,9 @@
> }
>
> void appenderMBeanRegistration() {
>- Enumeration enum = logger.getAllAppenders();
>- while(enum.hasMoreElements()) {
>- Appender appender = (Appender) enum.nextElement();
>+ for (Enumeration e = logger.getAllAppenders();
>+ e != null && e.hasMoreElements(); ) {
>+ Appender appender = (Appender) e.nextElement();
> registerAppenderMBean(appender);
> }
> }
>Index:
>src/java/org/apache/log4j/lf5/viewer/categoryexplorer/CategoryNodeEditor.java
>===================================================================
>RCS file:
>/home/cvspublic/jakarta-log4j/src/java/org/apache/log4j/lf5/viewer/categoryexplorer/CategoryNodeEditor.java,v
>retrieving revision 1.1
>diff -u -r1.1 CategoryNodeEditor.java
>---
>src/java/org/apache/log4j/lf5/viewer/categoryexplorer/CategoryNodeEditor.java
>26 Apr 2002 15:48:43 -0000 1.1
>+++
>src/java/org/apache/log4j/lf5/viewer/categoryexplorer/CategoryNodeEditor.java
>17 Oct 2003 07:39:26 -0000
>@@ -241,9 +241,10 @@
> protected int removeUnusedNodes() {
> int count = 0;
> CategoryNode root = _categoryModel.getRootCategoryNode();
>- Enumeration enum = root.depthFirstEnumeration();
>- while (enum.hasMoreElements()) {
>- CategoryNode node = (CategoryNode) enum.nextElement();
>+
>+ for (Enumeration e = root.depthFirstEnumeration();
>+ e.hasMoreElements(); ) {
>+ CategoryNode node = (CategoryNode) e.nextElement();
> if (node.isLeaf() && node.getNumberOfContainedRecords() == 0
> && node.getParent() != null) {
> _categoryModel.removeNodeFromParent(node);
>Index: src/java/org/apache/log4j/net/SocketReceiver.java
>===================================================================
>RCS file:
>/home/cvspublic/jakarta-log4j/src/java/org/apache/log4j/net/SocketReceiver.java,v
>retrieving revision 1.5
>diff -u -r1.5 SocketReceiver.java
>--- src/java/org/apache/log4j/net/SocketReceiver.java 24 Jun 2003
>08:21:52 -0000 1.5
>+++ src/java/org/apache/log4j/net/SocketReceiver.java 17 Oct 2003
>07:39:26 -0000
>@@ -305,8 +305,8 @@
> public Vector getConnectedSocketDetails() {
> Vector details = new Vector(socketList.size());
>
>- for (Enumeration enum = socketList.elements(); enum.hasMoreElements();) {
>- Socket socket = (Socket) enum.nextElement();
>+ for (Enumeration e = socketList.elements(); e.hasMoreElements();) {
>+ Socket socket = (Socket) e.nextElement();
> details.add(
> new SocketDetail(socket, (SocketNode) socketMap.get(socket)));
> }
>Index: src/java/org/apache/log4j/test/Finalize.java
>===================================================================
>RCS file:
>/home/cvspublic/jakarta-log4j/src/java/org/apache/log4j/test/Finalize.java,v
>retrieving revision 1.4
>diff -u -r1.4 Finalize.java
>--- src/java/org/apache/log4j/test/Finalize.java 5 May 2003
>20:42:58 -0000 1.4
>+++ src/java/org/apache/log4j/test/Finalize.java 17 Oct 2003
>07:39:27 -0000
>@@ -69,9 +69,9 @@
>
> static
> void foo(Category cat) {
>- Enumeration enum = cat.getAllAppenders();
>- while(enum != null && enum.hasMoreElements()) {
>- ((org.apache.log4j.Appender) enum.nextElement()).close();
>+ for (Enumeration e = cat.getAllAppenders();
>+ e != null && e.hasMoreElements();) {
>+ ((org.apache.log4j.Appender) e.nextElement()).close();
> }
> }
>
>Index: src/java/org/apache/log4j/xml/DOMConfigurator.java
>===================================================================
>RCS file:
>/home/cvspublic/jakarta-log4j/src/java/org/apache/log4j/xml/DOMConfigurator.java,v
>retrieving revision 1.59
>diff -u -r1.59 DOMConfigurator.java
>--- src/java/org/apache/log4j/xml/DOMConfigurator.java 17 Sep 2003
>17:02:52 -0000 1.59
>+++ src/java/org/apache/log4j/xml/DOMConfigurator.java 17 Oct 2003
>07:39:28 -0000
>@@ -61,13 +61,13 @@
>
> import org.xml.sax.InputSource;
>
>-import java.io.FileInputStream;
>-import java.io.IOException;
>+import java.io.File;
> import java.io.InputStream;
> import java.io.Reader;
>
> import java.lang.reflect.Method;
>
>+import java.net.MalformedURLException;
> import java.net.URL;
>
> import java.util.*;
>@@ -102,6 +102,7 @@
> @author Christopher Taylor
> @author Ceki Gülcü
> @author Anders Kristensen
>+ @author Timothy Emiola
>
> @since 0.8.3 */
> public class DOMConfigurator implements Configurator {
>@@ -138,6 +139,7 @@
> static final String EMPTY_STR = "";
> static final Class[] ONE_STRING_PARAM = new Class[] { String.class };
> static final String dbfKey = "javax.xml.parsers.DocumentBuilderFactory";
>+
>
> // key: appenderName, value: appender
> Hashtable appenderBag;
>@@ -714,30 +716,15 @@
> }
>
> public void doConfigure(String filename, LoggerRepository repository) {
>- FileInputStream fis = null;
>-
>- try {
>- fis = new FileInputStream(filename);
>- doConfigure(fis, repository);
>- } catch (IOException e) {
>- LogLog.error("Could not open [" + filename + "].", e);
>- } finally {
>- if (fis != null) {
>- try {
>- fis.close();
>- } catch (java.io.IOException e) {
>- LogLog.error("Could not close [" + filename + "].", e);
>- }
>- }
>- }
>+ try {
>+ doConfigure(new File(filename).toURL(),
>repository);
>+ } catch (MalformedURLException e) {
>+ LogLog.error("Could not open [" + filename + "].",
>e);
>+ }
> }
>
> public void doConfigure(URL url, LoggerRepository repository) {
>- try {
>- doConfigure(url.openStream(), repository);
>- } catch (IOException e) {
>- LogLog.error("Could not open [" + url + "].", e);
>- }
>+ doConfigure(new InputSource(url.getPath()), repository);
> }
>
> /**
>@@ -791,15 +778,18 @@
> DocumentBuilder docBuilder = dbf.newDocumentBuilder();
> docBuilder.setErrorHandler(new SAXErrorHandler());
> docBuilder.setEntityResolver(new Log4jEntityResolver());
>-
>- // we change the system ID to a valid URI so that Crimson won't
>- // complain. Indeed, "log4j.dtd" alone is not a valid URI which
>- // causes Crimson to barf. The Log4jEntityResolver only cares
>- // about the "log4j.dtd" ending.
>- inputSource.setSystemId("dummy://log4j.dtd");
>-
>+
>+ // Use the Log4J XML DTD SystemId if none is provided
>+ if (null == inputSource.getSystemId())
>+ {
>+ LogLog.warn(
>+ "No systemId found for the XML source, using "
>+ + Log4jEntityResolver.DTD_URL);
>+ inputSource.setSystemId(Log4jEntityResolver.DTD_URL.toString());
>+ }
> Document doc = docBuilder.parse(inputSource);
> parse(doc.getDocumentElement());
>+
> } catch (Exception e) {
> // I know this is miserable...
> LogLog.error("Could not parse input source [" + inputSource +
> "].", e);
>Index: src/java/org/apache/log4j/xml/Log4jEntityResolver.java
>===================================================================
>RCS file:
>/home/cvspublic/jakarta-log4j/src/java/org/apache/log4j/xml/Log4jEntityResolver.java,v
>retrieving revision 1.3
>diff -u -r1.3 Log4jEntityResolver.java
>--- src/java/org/apache/log4j/xml/Log4jEntityResolver.java 5 May 2003
>20:42:58 -0000 1.3
>+++ src/java/org/apache/log4j/xml/Log4jEntityResolver.java 17 Oct
>2003 07:39:28 -0000
>@@ -7,7 +7,8 @@
>
> package org.apache.log4j.xml;
>
>-import java.io.InputStream;
>+import java.net.URL;
>+
> import org.xml.sax.EntityResolver;
> import org.xml.sax.InputSource;
>
>@@ -19,24 +20,28 @@
> * file.
> *
> * @author Paul Austin
>- * */
>+ * @author Timothy Emiola
>+ */
> public class Log4jEntityResolver implements EntityResolver {
>
> public InputSource resolveEntity (String publicId, String systemId) {
>- System.err.println("piblicID: ["+publicId+"]");
>- System.err.println("systemId: ["+systemId+"]");
>- if (systemId.endsWith("log4j.dtd")) {
>- Class clazz = getClass();
>- InputStream in =
>clazz.getResourceAsStream("/org/apache/log4j/xml/log4j.dtd");
>- if (in == null) {
>- LogLog.error("Could not find [log4j.dtd]. Used [" +
>clazz.getClassLoader()
>- + "] class loader in the search.");
>- return null;
>+ LogLog.debug("publicID: [" + publicId + "]");
>+ LogLog.debug("systemId: [" + systemId + "]");
>+ LogLog.debug("DTD URL " + DTD_URL);
>+ if (systemId.endsWith(DTD_NAME)) {
>+ if (null == DTD_URL) {
>+ LogLog.error("Could not find [" + DTD_NAME + "]. Used [" +
>this.getClass().getClassLoader()
>+ + "] class loader in the search.");
>+ return null;
> } else {
>- return new InputSource(in);
>+ return new InputSource(DTD_URL.toString());
> }
> } else {
> return null;
> }
> }
>+
>+ static final String DTD_NAME = "log4j.dtd";
>+ static final URL DTD_URL = Log4jEntityResolver.class.getResource(DTD_NAME);
>+
> }
>Index: tests/input/xml/ExternalEntityTestCase.xml
>===================================================================
>RCS file: tests/input/xml/ExternalEntityTestCase.xml
>diff -N tests/input/xml/ExternalEntityTestCase.xml
>--- /dev/null 1 Jan 1970 00:00:00 -0000
>+++ tests/input/xml/ExternalEntityTestCase.xml 17 Oct 2003 07:39:29 -0000
>@@ -0,0 +1,23 @@
>+<?xml version="1.0" encoding="UTF-8" ?>
>+<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" [
>+<!ENTITY fragment1 SYSTEM "ExternalEntityTestCaseFragment1.xml">
>+<!ENTITY fragment2 SYSTEM "ExternalEntityTestCaseFragment2.xml">
>+]>
>+
>+<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
>+
>+ &fragment1;
>+ &fragment2;
>+
>+ <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>
>Index: tests/input/xml/ExternalEntityTestCaseFragment1.xml
>===================================================================
>RCS file: tests/input/xml/ExternalEntityTestCaseFragment1.xml
>diff -N tests/input/xml/ExternalEntityTestCaseFragment1.xml
>--- /dev/null 1 Jan 1970 00:00:00 -0000
>+++ tests/input/xml/ExternalEntityTestCaseFragment1.xml 17 Oct 2003
>07:39:29 -0000
>@@ -0,0 +1,12 @@
>+<?xml version="1.0" encoding="UTF-8" ?>
>+
>+ <appender name="A1" class="org.apache.log4j.FileAppender">
>+
>+ <param name="File" value="output/temp.A1" />
>+ <param name="Append" value="false" />
>+
>+ <layout class="org.apache.log4j.PatternLayout">
>+ <param name="ConversionPattern" value="%-5p %c{2} - %m%n"/>
>+ </layout>
>+ </appender>
>+
>Index: tests/input/xml/ExternalEntityTestCaseFragment2.xml
>===================================================================
>RCS file: tests/input/xml/ExternalEntityTestCaseFragment2.xml
>diff -N tests/input/xml/ExternalEntityTestCaseFragment2.xml
>--- /dev/null 1 Jan 1970 00:00:00 -0000
>+++ tests/input/xml/ExternalEntityTestCaseFragment2.xml 17 Oct 2003
>07:39:29 -0000
>@@ -0,0 +1,10 @@
>+<?xml version="1.0" encoding="UTF-8" ?>
>+
>+ <appender name="A2" class="org.apache.log4j.FileAppender">
>+ <param name="File" value="output/temp.A2" />
>+ <param name="Append" value="false" />
>+ <layout class="org.apache.log4j.TTCCLayout">
>+ <param name="DateFormat" value="ISO8601" />
>+ </layout>
>+ </appender>
>+
>Index: tests/src/java/org/apache/log4j/xml/DOMTestCase.java
>===================================================================
>RCS file:
>/home/cvspublic/jakarta-log4j/tests/src/java/org/apache/log4j/xml/DOMTestCase.java,v
>retrieving revision 1.8
>diff -u -r1.8 DOMTestCase.java
>--- tests/src/java/org/apache/log4j/xml/DOMTestCase.java 17 Sep
>2003 17:02:52 -0000 1.8
>+++ tests/src/java/org/apache/log4j/xml/DOMTestCase.java 17 Oct
>2003 07:39:29 -0000
>@@ -50,8 +50,9 @@
> logger = Logger.getLogger(DOMTestCase.class);
> }
>
>- public void tearDown() {
>+ public void tearDown() {
> root.getLoggerRepository().resetConfiguration();
>+ root.getLoggerRepository().shutdown();
> }
>
> public void test1() throws Exception {
>@@ -74,6 +75,28 @@
> assertTrue(Compare.compare(FILTERED_A1, "witness/dom.A1.1"));
> assertTrue(Compare.compare(FILTERED_A2, "witness/dom.A2.1"));
> }
>+
>+ public void testExternalEntitys() throws Exception {
>+ DOMConfigurator.configure("input/xml/ExternalEntityTestCase.xml");
>+ 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()});
>+
>+ assertTrue(Compare.compare(FILTERED_A1, "witness/ent.A1.1"));
>+ assertTrue(Compare.compare(FILTERED_A2, "witness/ent.A2.1"));
>+ }
>+
>
> void common() {
> int i = -1;
>@@ -105,6 +128,7 @@
> public static Test suite() {
> TestSuite suite = new TestSuite();
> suite.addTest(new DOMTestCase("test1"));
>+ suite.addTest(new DOMTestCase("testExternalEntitys"));
> return suite;
> }
>
>Index: tests/witness/ent.A1.1
>===================================================================
>RCS file: tests/witness/ent.A1.1
>diff -N tests/witness/ent.A1.1
>--- /dev/null 1 Jan 1970 00:00:00 -0000
>+++ tests/witness/ent.A1.1 17 Oct 2003 07:39:29 -0000
>@@ -0,0 +1,93 @@
>+DEBUG xml.DOMTestCase - Message 0
>+DEBUG xml.DOMTestCase - Message 0
>+DEBUG root - Message 0
>+INFO xml.DOMTestCase - Message 1
>+INFO xml.DOMTestCase - Message 1
>+INFO root - Message 1
>+WARN xml.DOMTestCase - Message 2
>+WARN xml.DOMTestCase - Message 2
>+WARN root - Message 2
>+ERROR xml.DOMTestCase - Message 3
>+ERROR xml.DOMTestCase - Message 3
>+ERROR root - Message 3
>+FATAL xml.DOMTestCase - Message 4
>+FATAL xml.DOMTestCase - Message 4
>+FATAL root - Message 4
>+DEBUG xml.DOMTestCase - Message 5
>+java.lang.Exception: Just testing
>+ at org.apache.log4j.xml.DOMTestCase.common(X)
>+ at org.apache.log4j.xml.DOMTestCase.testExternalEntitys(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.DOMTestCase - Message 5
>+java.lang.Exception: Just testing
>+ at org.apache.log4j.xml.DOMTestCase.common(X)
>+ at org.apache.log4j.xml.DOMTestCase.testExternalEntitys(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.DOMTestCase.common(X)
>+ at org.apache.log4j.xml.DOMTestCase.testExternalEntitys(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.DOMTestCase - Message 6
>+java.lang.Exception: Just testing
>+ at org.apache.log4j.xml.DOMTestCase.common(X)
>+ at org.apache.log4j.xml.DOMTestCase.testExternalEntitys(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.DOMTestCase - Message 6
>+java.lang.Exception: Just testing
>+ at org.apache.log4j.xml.DOMTestCase.common(X)
>+ at org.apache.log4j.xml.DOMTestCase.testExternalEntitys(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.DOMTestCase.common(X)
>+ at org.apache.log4j.xml.DOMTestCase.testExternalEntitys(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)
>Index: tests/witness/ent.A2.1
>===================================================================
>RCS file: tests/witness/ent.A2.1
>diff -N tests/witness/ent.A2.1
>--- /dev/null 1 Jan 1970 00:00:00 -0000
>+++ tests/witness/ent.A2.1 17 Oct 2003 07:39:30 -0000
>@@ -0,0 +1,62 @@
>+ [main] DEBUG org.apache.log4j.xml.DOMTestCase - Message 0
>+ [main] DEBUG root - Message 0
>+ [main] INFO org.apache.log4j.xml.DOMTestCase - Message 1
>+ [main] INFO root - Message 1
>+ [main] WARN org.apache.log4j.xml.DOMTestCase - Message 2
>+ [main] WARN root - Message 2
>+ [main] ERROR org.apache.log4j.xml.DOMTestCase - Message 3
>+ [main] ERROR root - Message 3
>+ [main] FATAL org.apache.log4j.xml.DOMTestCase - Message 4
>+ [main] FATAL root - Message 4
>+ [main] DEBUG org.apache.log4j.xml.DOMTestCase - Message 5
>+java.lang.Exception: Just testing
>+ at org.apache.log4j.xml.DOMTestCase.common(X)
>+ at org.apache.log4j.xml.DOMTestCase.testExternalEntitys(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.DOMTestCase.common(X)
>+ at org.apache.log4j.xml.DOMTestCase.testExternalEntitys(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.DOMTestCase - Message 6
>+java.lang.Exception: Just testing
>+ at org.apache.log4j.xml.DOMTestCase.common(X)
>+ at org.apache.log4j.xml.DOMTestCase.testExternalEntitys(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.DOMTestCase.common(X)
>+ at org.apache.log4j.xml.DOMTestCase.testExternalEntitys(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: log4j-dev-unsubscribe@jakarta.apache.org
>For additional commands, e-mail: log4j-dev-help@jakarta.apache.org
--
Ceki Gülcü
For log4j documentation consider "The complete log4j manual"
ISBN: 2970036908 http://www.qos.ch/shop/products/clm_t.jsp
import org.apache.Facetime;
ApacheCon US 2003, 18-21 November http://apachecon.com/
---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: log4j-dev-help@jakarta.apache.org