logging-log4j-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Günter Albrecht (JIRA) <j...@apache.org>
Subject [jira] [Commented] (LOG4J2-1045) WAS8: externalize log4j2.xml via URL resource
Date Mon, 15 Jun 2015 17:06:02 GMT

    [ https://issues.apache.org/jira/browse/LOG4J2-1045?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14586322#comment-14586322

Günter Albrecht commented on LOG4J2-1045:

No, bug LOG4J2-1050 does not relate to this bug.
My bug describes how to handle a configurable location of the {{log4j2.xml}} whereas bug LOG4J2-1050
wants to configure a location of the logging output file relative to the location of the configuration
file {{log4j2.xml}}.

I patched {{ConfigurationFactory$Factory}} like this and it works fine.
This way I have my single solution for {{MyConfigurationFactory}} working both programmatically
and declaratively for Web- and EJB-Apps:

{code:title=ConfigurationFactory$Factory.getConfiguration(final String name, final URI configLocation)|borderStyle=solid}
if (configLocation == null) {
	final String config = this.substitutor.replace(
	if (config != null) {
	//--- Patch Jira Bug: https://issues.apache.org/jira/browse/LOG4J2-1045 -------------------
	else {
	  for (final ConfigurationFactory factory : factories) {
		final String[] types = factory.getSupportedTypes();
		if (types != null) {
			for (final String type : types) {
				if (type.equals("*")) {
					final Configuration configuration = factory.getConfiguration(name, configLocation); //
configLocation == null
					if (configuration != null) {
						return configuration;
} else {

Configuration config = getConfiguration(true, name);

> WAS8: externalize log4j2.xml via URL resource
> ---------------------------------------------
>                 Key: LOG4J2-1045
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-1045
>             Project: Log4j 2
>          Issue Type: Bug
>          Components: Configurators
>    Affects Versions: 2.3
>         Environment: WebSphere 8.0; Win7 x64
>            Reporter: Günter Albrecht
>              Labels: patch
> We're working with WebSphere 8.0 and our operations team has demanded to externalize
the {{log4j2.xml}} file per application.
> So I defined a URL resource on WAS8 containing the path to the {{log4j2.xml}} somewhere
on the filesystem.
> At first glance the solution seems very simple:
> I defined the property {{log4j.configurationFactory}} in the {{log4j2.component.properties}}
file {{log4j.configurationFactory=de.company.MyConfigurationFactory}} available via classpath
of the application.
> In this class I specialized the method {{public Configuration getConfiguration(String
name, URI configLocation, ClassLoader loader)}}. There I make a lookup to the URL resource.
> But it does'nt function as of a missing implementation in the class {{ConfigurationFactory$Factory}}
and the method {{public Configuration getConfiguration(final String name, final URI configLocation)}}.
When one enters the method the variable {{configLocation}} is {{null}}. Then the property
{{log4j.configurationFile}} is checked which is intentionally not set in the {{log4j2.component.properties}}
file as it must be dynamical - via a URL resource.
> Hence also the variable {{config}} is {{null}}. *Unfortunately merely {{config != null}}
is handled and no else case is implemented.*
> So my improvement is to implement an else case which is identical to the else case of
{{if (configLocation == null)}}.
> With this solution I do not have to implement cumbersome versions for Web- and EJB-applications.

This message was sent by Atlassian JIRA

To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org

View raw message