You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-user@logging.apache.org by Jacob Kjome <ho...@visi.com> on 2002/10/29 19:48:11 UTC

Re[2]: subclassing org.apache.log4j.xml.DOMConfigurator, "Could not find log4j.dtd"

Hello Sean,

Is that the most recent source for DOMConfigurator?  Ceki made some
very recent changes in CVS.  Just alerting you to that fact.  I
imagine that log4j-1.2.8 will contain the change.

Jake

Tuesday, October 29, 2002, 12:06:43 PM, you wrote:


SSCM> I am studying the source code for Log4j

SSCM> DOMConfigurator.java is where Log4j attempts to access 
SSCM> log4j.dtd 

SSCM> /////////////////////////

SSCM>       Class clazz = this.getClass();
SSCM>       URL dtdURL = clazz.getResource("/org/apache/log4j/xml/log4j.dtd");
SSCM>       if(dtdURL == null) {
SSCM>         LogLog.error("Could not find [log4j.dtd]. Used
SSCM> ["+clazz.getClassLoader()+
SSCM>                      "] class loader in the search.");
SSCM>       }
SSCM>       else {
SSCM>         LogLog.debug("URL to log4j.dtd is [" + dtdURL.toString()+"].");
SSCM>         inputSource.setSystemId(dtdURL.toString());
SSCM>       }
SSCM>       Document doc = docBuilder.parse(inputSource);


SSCM> /////////////////////////

SSCM> Keep in mind that my class, ReloadingDOMConfigurator, is a subclass 
SSCM> of DOMConfigurator.

SSCM> The call "this.getClass()" should return a reference to
SSCM> ReloadingDOMConfigurator.class 

SSCM> Hmmm.

SSCM> -Sean


>> -----Original Message-----
>> From: Sullivan, Sean C 
>> Sent: Monday, October 28, 2002 4:02 PM
>> Subject: subclassing org.apache.log4j.xml.DOMConfigurator, "Could not find
>> log4j.dtd"
>> 
>> 
>> I am using:
>> 
>>       Jakarta Log4j 1.2.7
>>       IBM Websphere 3.5
>> 
>> I built my own subclass of the DOMConfigurator.
>> 
>> package foo.bar;
>> 
>> public class ReloadingDOMConfigurator
>>       extends org.apache.log4j.xml.DOMConfigurator
>> {
>> 
>>       // ... code omitted
>> }
>> 
>> 
>> I set the following system properties:
>> 
>> log4j.configuratorClass=foo.bar.ReloadingDOMConfigurator
>> log4j.configuration=file:/foo/config/log4j.xml
>> log4j.configDebug=true
>> 
>> 
>> The problem is that Log4j cannot locate the log4j.dtd file
>> 
>> This is very strange because I confirmed that log4j.dtd is located
>> inside of the Log4j JAR file.  I have not modified the log4j JAR file.
>> 
>> I packaged foo.bar.ReloadingDOMConfigurator class inside of a standalone
>> JAR file  (foobar.jar)
>> 
>> For fun, I put an extra copy of log4j.dtd inside of foobar.jar
>> 
>>  /org/apache/log4j/xml/log4j.dtd
>> 
>> For reasons that I do not understand, Log4j cannot find either copy of
>> the log4j.dtd file
>> 
>> Does anybody know what is going on?
>> 
>> Details below...
>> 
>> -Sean
>> 
>> 
>> log4j:ERROR Could not find [log4j.dtd]. Used
>> [com.ibm.servlet.classloader.DynamicClassLoader@5f5f21] class loader in
>> the
>> search.
>> log4j:ERROR Could not parse input source [org.xml.sax.InputSource@21aa85].
>> java.io.FileNotFoundException:
>> /floggy/yuck/WebSphere/AppServer/bin/log4j.dtd (No such file or directory)
>>       at java.io.FileInputStream.open(Native Method)
>>       at java.io.FileInputStream.<init>(FileInputStream.java:68)
>>       at
>> sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java
>> :7
>> 2)
>>       at
>> sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnecti
>> on
>> .java:136)
>>       at java.net.URL.openStream(URL.java:818)
>>       at
>> org.apache.xerces.impl.XMLEntityManager.startEntity(XMLEntityManager.java:
>> 79
>> 6)
>>       at
>> org.apache.xerces.impl.XMLEntityManager.startDTDEntity(XMLEntityManager.ja
>> va
>> :756)
>>       at
>> org.apache.xerces.impl.XMLDTDScannerImpl.setInputSource(XMLDTDScannerImpl.
>> ja
>> va:267)
>>       at
>> org.apache.xerces.impl.XMLDocumentScannerImpl$DTDDispatcher.dispatch(XMLDo
>> cu
>> mentScannerImpl.java:826)
>>       at
>> org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocu
>> me
>> ntFragmentScannerImpl.java:333)
>>       at
>> org.apache.xerces.parsers.DTDConfiguration.parse(DTDConfiguration.java:524
>> )
>>       at
>> org.apache.xerces.parsers.DTDConfiguration.parse(DTDConfiguration.java:580
>> )
>>       at org.apache.xerces.parsers.XMLParser.parse(XMLParser.java:152)
>>       at org.apache.xerces.parsers.DOMParser.parse(DOMParser.java:253)
>>       at
>> org.apache.xerces.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:
>> 20
>> 1)
>>       at
>> org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:672)
>>       at
>> org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:616)
>>       at
>> org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:584)
>>       at
>> foo.bar.ReloadingDOMConfigurator$XMLWatchdog.doOnChange(ReloadingDOMConfig
>> ur
>> ator.java:60)
>>       at
>> org.apache.log4j.helpers.FileWatchdog.checkAndConfigure(FileWatchdog.java:
>> 80
>> )
>>       at
>> org.apache.log4j.helpers.FileWatchdog.<init>(FileWatchdog.java:49)
>>       at
>> foo.bar.ReloadingDOMConfigurator$XMLWatchdog.<init>(ReloadingDOMConfigurat
>> or
>> .java:49)
>>       at
>> foo.bar.ReloadingDOMConfigurator.doConfigure(ReloadingDOMConfigurator.java
>> :8
>> 5)
>>       at
>> org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverte
>> r.
>> java:460)
>>       at org.apache.log4j.LogManager.<clinit>(LogManager.java:113)
>> 
>> 
>> 

SSCM> --
SSCM> To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
SSCM> For additional commands, e-mail: <ma...@jakarta.apache.org>



-- 
Best regards,
 Jacob                            mailto:hoju@visi.com


--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>