Thank you. This lets me put my own LoggerRepository in as the default. But how 
do I create my LoggerRepository that does the same things as the default 
LoggerRepository, but includes the UnrecognizedElementHandler? Does this?
        public LoggerRepository() implements UnrecognizedElementHandler {
                public parseUnrecognizedElement(...) { ... }
        }
Does the implemented class do everything the default does though I haven't 
overridden methods?

Thank you,
Jay Turner


-----Original Message-----
From: Scott Deboy [mailto:[email protected]] 
Sent: Friday, July 15, 2011 5:19 PM
To: Log4J Users List
Subject: Re: I need to handle log4j:WARN Unrecognized element param

Here's how Chainsaw does it:

1. Create your own LoggerRepository implementation that implements
unrecognizedelementhandler (Chainsaw uses LoggerRepositoryExImpl from the
components companion).

    LogManager.setRepositorySelector(new RepositorySelector() {

      public LoggerRepository getLoggerRepository() {
          return repositoryExImpl;
      }}, repositorySelectorGuard);

Then you can call DOMConfigurator.configure and it'll pass those
unrecognized elements to your repository selector impl.

Scott

On Fri, Jul 15, 2011 at 3:02 PM, Turner, Jay
<[email protected]>wrote:

> I get "log4j:WARN Unrecognized element param" because we have some extra
> entries in the log4j 1.2.15 XML configuration file at the root level.
>
> The code uses
> DOMConfigurator configurator = new DOMConfigurator();
> configurator.doConfigure(inputStream,
> org.apache.log4j.LogManager.getLoggerRepository());
>
> The LoggerRepository returned doesn't implement UnrecognizedElementHandler
> (or at least not that I know how to connect to it).
> I thought of using
> class ExtendedLoggerRepository extends
> org.apache.log4j.LoggerRepositoryExImpl {
>                public boolean parseUnrecognizedElement(
>                        org.w3c.dom.Element element,
>                        java.util.Properties props)
>                        throws java.lang.Exception {
>                        // My code
>                }
>        }
>        configurator.doConfigure(
>                inputStream,
>                new
> ExtendedLoggerRepository(org.apache.log4j.LogManager.getLoggerRepository()));
>
> But my IntelliJ says that LoggerRepositoryExImpl, which is a public final
> class, is not in that package nor the spi subpackage.
>
> What is the right way of using the default logger repository but hooking in
> so that I can parse extra parameters as in:
> <?xml version="1.0" encoding="UTF-8"?>
> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/";
> debug="true">
> <param name="somename" value="somevalue"/>
> :
>
> Thank you,
> Jay Turner
>
>
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to