The inherited code did have some "public static final org.apache.log4j.Logger
..." calls, thank you. Changing those allowed my code to be called first.
However a Catch-22 still exists. Trying:
private static final Object guard = new Object();
private static final LoggerRepositoryHandler handler =
setupLoggerRepositoryHandler();
private static LoggerRepositoryHandler setupLoggerRepositoryHandler() {
LoggerRepositoryHandler handle =
new
LoggerRepositoryHandler(org.apache.log4j.LogManager.getLoggerRepository().getRootLogger());
org.apache.log4j.LogManager.setRepositorySelector(new
RepositorySelector() {
public LoggerRepository getLoggerRepository() {
return handler;
}}, guard
);
return handle;
}
This gets called first, but the
org.apache.log4j.LogManager.getLoggerRepository() call to link my repository
with the default repository invokes the log4j setup, which completes and uses
the default repository before my new repository (with the
parseUnrecognizedElement method) is setup. If I set the selector first then
when I call getLoggerRepository() it will go through my selector which has no
default repository setup.
I can't get ahold of the log4j system to link in my parseUnrecognizedElement
method first without letting log4j setup everything first.
How has anyone every hooked parseUnrecognizedElement into log4j before it
starts up?
I just need to process multiple non-logger/appender-specific myKey=myValue
parameters like this:
<?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="myKey" value="myValue"/>
Thank you,
Jay Turner
> From: Scott Deboy ... more likely a static logger declaration or a logger
> instance
> be initialized prior to your configuration code being ran.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]