Created
April 5, 2011 17:05
-
-
Save taichi/904019 to your computer and use it in GitHub Desktop.
ch.qos.logback.classic.util.ContextInitializer is not extensible!!!
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public void configureByResource(URL url) throws JoranException { | |
if (url == null) { | |
throw new IllegalArgumentException("URL argument cannot be null"); | |
} | |
if (url.toString().endsWith("groovy")) { | |
if (EnvUtil.isGroovyAvailable()) { | |
// avoid directly referring to GafferConfigurator so as to avoid | |
// loading groovy.lang.GroovyObject . See also http://jira.qos.ch/browse/LBCLASSIC-214 | |
GafferUtil.runGafferConfiguratorOn(loggerContext, this, url); | |
} else { | |
StatusManager sm = loggerContext.getStatusManager(); | |
sm.add(new ErrorStatus("Groovy classes are not available on the class path. ABORTING INITIALIZATION.", | |
loggerContext)); | |
} | |
} | |
if (url.toString().endsWith("xml")) { | |
JoranConfigurator configurator = new JoranConfigurator(); | |
configurator.setContext(loggerContext); | |
configurator.doConfigure(url); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
static { | |
// By default we use a DefaultRepositorySelector which always returns 'h'. | |
Hierarchy h = new Hierarchy(new RootLogger((Level) Level.DEBUG)); | |
repositorySelector = new DefaultRepositorySelector(h); | |
/** Search for the properties file log4j.properties in the CLASSPATH. */ | |
String override =OptionConverter.getSystemProperty(DEFAULT_INIT_OVERRIDE_KEY, | |
null); | |
// if there is no default init override, then get the resource | |
// specified by the user or the default config file. | |
if(override == null || "false".equalsIgnoreCase(override)) { | |
String configurationOptionStr = OptionConverter.getSystemProperty( | |
DEFAULT_CONFIGURATION_KEY, | |
null); | |
String configuratorClassName = OptionConverter.getSystemProperty( | |
CONFIGURATOR_CLASS_KEY, | |
null); | |
URL url = null; | |
// if the user has not specified the log4j.configuration | |
// property, we search first for the file "log4j.xml" and then | |
// "log4j.properties" | |
if(configurationOptionStr == null) { | |
url = Loader.getResource(DEFAULT_XML_CONFIGURATION_FILE); | |
if(url == null) { | |
url = Loader.getResource(DEFAULT_CONFIGURATION_FILE); | |
} | |
} else { | |
try { | |
url = new URL(configurationOptionStr); | |
} catch (MalformedURLException ex) { | |
// so, resource is not a URL: | |
// attempt to get the resource from the class path | |
url = Loader.getResource(configurationOptionStr); | |
} | |
} | |
// If we have a non-null url, then delegate the rest of the | |
// configuration to the OptionConverter.selectAndConfigure | |
// method. | |
if(url != null) { | |
LogLog.debug("Using URL ["+url+"] for automatic log4j configuration."); | |
try { | |
OptionConverter.selectAndConfigure(url, configuratorClassName, | |
LogManager.getLoggerRepository()); | |
} catch (NoClassDefFoundError e) { | |
LogLog.warn("Error during default initialization", e); | |
} | |
} else { | |
LogLog.debug("Could not find resource: ["+configurationOptionStr+"]."); | |
} | |
} else { | |
LogLog.debug("Default initialization of overridden by " + | |
DEFAULT_INIT_OVERRIDE_KEY + "property."); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
static | |
public | |
void selectAndConfigure(URL url, String clazz, LoggerRepository hierarchy) { | |
Configurator configurator = null; | |
String filename = url.getFile(); | |
if(clazz == null && filename != null && filename.endsWith(".xml")) { | |
clazz = "org.apache.log4j.xml.DOMConfigurator"; | |
} | |
if(clazz != null) { | |
LogLog.debug("Preferred configurator class: " + clazz); | |
configurator = (Configurator) instantiateByClassName(clazz, | |
Configurator.class, | |
null); | |
if(configurator == null) { | |
LogLog.error("Could not instantiate configurator ["+clazz+"]."); | |
return; | |
} | |
} else { | |
configurator = new PropertyConfigurator(); | |
} | |
configurator.doConfigure(url, hierarchy); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment