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 "Sullivan, Sean C - MLG" <Su...@menlolog.com> on 2002/10/29 19:06:43 UTC
RE: subclassing org.apache.log4j.xml.DOMConfigurator, "Could not
find log4j.dtd"
I am studying the source code for Log4j
DOMConfigurator.java is where Log4j attempts to access
log4j.dtd
/////////////////////////
Class clazz = this.getClass();
URL dtdURL = clazz.getResource("/org/apache/log4j/xml/log4j.dtd");
if(dtdURL == null) {
LogLog.error("Could not find [log4j.dtd]. Used
["+clazz.getClassLoader()+
"] class loader in the search.");
}
else {
LogLog.debug("URL to log4j.dtd is [" + dtdURL.toString()+"].");
inputSource.setSystemId(dtdURL.toString());
}
Document doc = docBuilder.parse(inputSource);
/////////////////////////
Keep in mind that my class, ReloadingDOMConfigurator, is a subclass
of DOMConfigurator.
The call "this.getClass()" should return a reference to
ReloadingDOMConfigurator.class
Hmmm.
-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)
>
>
>
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>
Re[2]: subclassing org.apache.log4j.xml.DOMConfigurator, "Could not find log4j.dtd"
Posted by Jacob Kjome <ho...@visi.com>.
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>