Scott,

This is really strange. I looked over the code, could not find anything wrong with it.

I've tried running SimpleLog.java as

> java SimpleLog file:///home/ceki/withdtd.xml

which worked fine.

Tried

> java SimpleLog

which also worked fine.

(I am including SimpleLog.java and withdtd.xml as attachments.)

Just rename withdtd.xml as log4j.xml for testing automatic configuration.

The output I get is

> cat withdtd.log
DEBUG org.apache.log4j.joran.JoranConfigurator - Starting to parse input source.
DEBUG org.apache.log4j.xml.Log4jEntityResolver - Log4jEntityResolver.resolveEntity(null, file:///c:/home/ceki/log4j.dtd) called
WARN org.apache.log4j.xml.Log4jEntityResolver - The 'log4j.dtd' is no longer used nor needed.
WARN org.apache.log4j.xml.Log4jEntityResolver - See http://logging.apache.org/log4j/docs/codes.html#log4j_dtd for more details.
DEBUG org.apache.log4j.joran.action.ConfigurationAction - Starting internal logs on console.
DEBUG org.apache.log4j.joran.action.AppenderAction - About to instantiate appender of type [org.apache.log4j.FileAppender]
DEBUG org.apache.log4j.joran.action.AppenderAction - Appender named as [WDTD]
DEBUG org.apache.log4j.joran.action.AppenderAction - Pushing appender on to the object stack.
DEBUG org.apache.log4j.config.PropertySetter - Setting property [append] to [false].
DEBUG org.apache.log4j.config.PropertySetter - Setting property [file] to [withdtd.log].
DEBUG org.apache.log4j.joran.action.LayoutAction - About to instantiate layout of type [org.apache.log4j.PatternLayout]
DEBUG org.apache.log4j.joran.action.LayoutAction - Pushing layout on top of the object stack.
DEBUG org.apache.log4j.config.PropertySetter - Setting property [conversionPattern] to [%-5p %c - %m%n].
DEBUG org.apache.log4j.joran.action.LayoutAction - Popping layout from the object stack
DEBUG org.apache.log4j.joran.action.LayoutAction - About to set the layout of the containing appender.
DEBUG org.apache.log4j.FileAppender - setFile called: withdtd.log, false
DEBUG org.apache.log4j.FileAppender - setFile ended
DEBUG org.apache.log4j.joran.action.AppenderAction - Popping appender named [WDTD] from the object stack
DEBUG org.apache.log4j.joran.action.RootLoggerAction - Pushing root logger on stack
DEBUG org.apache.log4j.joran.action.LevelAction - Encapsulating logger name is [root], levelvalue is [DEBUG].
DEBUG org.apache.log4j.joran.action.LevelAction - root level set to DEBUG
DEBUG org.apache.log4j.joran.action.AppenderRefAction - Attaching appender named [WDTD] to logger named [root].
DEBUG org.apache.log4j.joran.action.RootLoggerAction - Removing root logger from top of stack.
DEBUG org.apache.log4j.joran.action.ConfigurationAction - Will stop writing internal logs on console.
DEBUG org.apache.log4j.joran.JoranConfigurator - Finished parsing.
DEBUG SimpleLog - This message number: 0
DEBUG SimpleLog - This message number: 1
ERROR SimpleLog - This message number: 2
java.lang.Exception: Bogus.
at SimpleLog.main(SimpleLog.java:27)

Could you check what you get?

At 08:28 PM 11/29/2004, you wrote:
Current HEAD (today)

Reported error: "Parsing fatal error" at line 2 column -1 with exception org.xml.sax.SAXParseException: Relative URI "log4j.dtd"; can not be resolved without a base URI.
Reported error: "Problem parsing XML document. See previously reported errors. Abandoning all furhter processing." at line -1 column -1

To get this output, I locally modified JoranConfigurator to print the error items:

public void doConfigure(URL url, LoggerRepository repository) {
// This line is needed here because there is logging from inside this method.
this.repository = repository;

    ExecutionContext ec = joranInterpreter.getExecutionContext();
    List errorList = ec.getErrorList();

int result = XMLUtil.checkIfWellFormed(url, errorList);
switch (result) {
case XMLUtil.ILL_FORMED:
case XMLUtil.UNRECOVERABLE_ERROR:
errorList.add(
new ErrorItem(
"Problem parsing XML document. See previously reported errors. Abandoning all furhter processing."));
for (Iterator iter = errorList.iterator();iter.hasNext();) {
ErrorItem item = (ErrorItem)iter.next();
System.out.println(item);

    }

    return;
    }

-- Ceki G�lc�

The complete log4j manual: http://qos.ch/eclm
Professional log4j support: http://qos.ch/log4jSupport
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.apache.log4j.config.ConfiguratorBase;
import org.apache.log4j.joran.JoranConfigurator;
import org.apache.log4j.spi.LoggerRepository;

import java.net.URL;

public class SimpleLog {

  public static void main(String[] args) throws Exception {

    if(args.length == 1) {
      String url = args[0];
      LoggerRepository repo = LogManager.getLoggerRepository();
      JoranConfigurator jc = new JoranConfigurator();
      jc.doConfigure(new URL(url), repo);
      jc.dumpErrors();
    }

    Logger logger = Logger.getLogger(SimpleLog.class);
    int i = 0;

    logger.debug("This message number: " + (i++));
    logger.debug("This message number: " + (i++));
    logger.error("This message number: " + (i++), new Exception("Bogus."));
  }

}

Attachment: withdtd.xml
Description: application/xml

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to