logging-log4j-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Pastrie (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (LOG4J2-1721) Composite configuration using log4jConfiguration context parameter
Date Mon, 21 Nov 2016 15:20:58 GMT

     [ https://issues.apache.org/jira/browse/LOG4J2-1721?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Pastrie updated LOG4J2-1721:
----------------------------
    Description: 
Log4j allows multiple configuration files to be used by specifying them as a list of comma
separated file paths on log4j.configurationFile property. This feature is not available in
web environment since the  log4jConfiguration context parameter accepts a single Path/File/URI.

My proposal is to apply some small changes in the Log4jWebInitializerImpl class

- change method getConfigURI to return List<URI> instead of URI.

{code:title=Log4jWebInitializerImpl.java|borderStyle=solid}
if (configLocation != null) {
	if (configLocation.contains(",")) {
		final String[] parts = configLocation.split(",");
		final List<URI> uris = new ArrayList<>(parts.length);
		for (final String part : parts) {
			final URL url = servletContext.getResource(part);
			if (url != null) {
				final URI uri = url.toURI();
				LOGGER.debug("getConfigURI found resource [{}] in servletContext at [{}]", uri, configLocation);
				uris.add(url);
			}
		}
	}
{code}

- change method initializeNonJndi 

{code:title=Log4jWebInitializerImpl.java|borderStyle=solid}
[...]
final List<URI> listUri = getConfigURI(location);
this.loggerContext = Configurator.initialize(this.name, this.getClassLoader(), listUri, this.servletContext);
{code}


  was:
Log4j allows multiple configuration files to be used by specifying them as a list of comma
separated file paths on log4j.configurationFile property. This feature is not available in
web environment since the  log4jConfiguration context parameter accepts a Path/File/URI.

My proposal is to apply some small changes in the Log4jWebInitializerImpl class

- change method getConfigURI to return List<URI> instead of URI.

{code:title=Log4jWebInitializerImpl.java|borderStyle=solid}
if (configLocation != null) {
	if (configLocation.contains(",")) {
		final String[] parts = configLocation.split(",");
		final List<URI> uris = new ArrayList<>(parts.length);
		for (final String part : parts) {
			final URL url = servletContext.getResource(part);
			if (url != null) {
				final URI uri = url.toURI();
				LOGGER.debug("getConfigURI found resource [{}] in servletContext at [{}]", uri, configLocation);
				uris.add(url);
			}
		}
	}
{code}

- change method initializeNonJndi 

{code:title=Log4jWebInitializerImpl.java|borderStyle=solid}
[...]
final List<URI> listUri = getConfigURI(location);
this.loggerContext = Configurator.initialize(this.name, this.getClassLoader(), listUri, this.servletContext);
{code}



> Composite configuration using log4jConfiguration context parameter
> ------------------------------------------------------------------
>
>                 Key: LOG4J2-1721
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-1721
>             Project: Log4j 2
>          Issue Type: Improvement
>          Components: Configurators, Web/Servlet
>    Affects Versions: 2.7
>            Reporter: Pastrie
>              Labels: features
>   Original Estimate: 3h
>  Remaining Estimate: 3h
>
> Log4j allows multiple configuration files to be used by specifying them as a list of
comma separated file paths on log4j.configurationFile property. This feature is not available
in web environment since the  log4jConfiguration context parameter accepts a single Path/File/URI.
> My proposal is to apply some small changes in the Log4jWebInitializerImpl class
> - change method getConfigURI to return List<URI> instead of URI.
> {code:title=Log4jWebInitializerImpl.java|borderStyle=solid}
> if (configLocation != null) {
> 	if (configLocation.contains(",")) {
> 		final String[] parts = configLocation.split(",");
> 		final List<URI> uris = new ArrayList<>(parts.length);
> 		for (final String part : parts) {
> 			final URL url = servletContext.getResource(part);
> 			if (url != null) {
> 				final URI uri = url.toURI();
> 				LOGGER.debug("getConfigURI found resource [{}] in servletContext at [{}]", uri, configLocation);
> 				uris.add(url);
> 			}
> 		}
> 	}
> {code}
> - change method initializeNonJndi 
> {code:title=Log4jWebInitializerImpl.java|borderStyle=solid}
> [...]
> final List<URI> listUri = getConfigURI(location);
> this.loggerContext = Configurator.initialize(this.name, this.getClassLoader(), listUri,
this.servletContext);
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

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


Mime
View raw message