DOMConfigurator will handle the recognized elements and will delegate unrecognized elements to your selector, so I think you will be ok.
Scott On Fri, Jul 15, 2011 at 4:25 PM, Turner, Jay <[email protected]>wrote: > 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] > >
