Bart S. created LOG4J2-1095:
-------------------------------
Summary: How can we have multiple Configurations?
Key: LOG4J2-1095
URL: https://issues.apache.org/jira/browse/LOG4J2-1095
Project: Log4j 2
Issue Type: Brainstorming
Components: Configurators
Affects Versions: 2.4
Reporter: Bart S.
Fix For: 2.4
So the question is how can a user maintain multiple configurations that he can
then establish or activate at will.
The idea is to break away from using files as the only case, to both using
files and using custom programmatic control, as both special cases of
configuration.
While thinking of it I created an UML diagram:
!log4j-xen-configurationbuilder-uml.jpg!
I believe this should be the setup. Our new Factory can be fed a Specification
instead of a ConfigurationSource/file location.
That would make these two sources equivalent.
Programmatically what you might get is:
{{code}}
Specification a1 = SpecificationBuilder.newInstance()
.addAppender(....)
.addConfig(...)
.addTo(..., ....)
.build();
Specification a2 = SpecificationBuilder.newInstance()
.addAppender(....)
.addConfig(...)
.addTo(..., ....)
.build();
Configuration c1 =
CustomConfigurationFactory.getInstance().getConfiguration( a1 );
Configuration c2 =
CustomConfigurationFactory.getInstance().getConfiguration( a1 );
{code}
Or alternatively
{code}
CustomConfigurationFactory ccf = CustomConfigurationFactory.getInstance();
ccf.setSpecification( a1 );
LogManager.setFactory( ccf );
{code}
The Factory only needs to be given to the system because the system wants to do
static initialisation at some point in the beginning. After that setting a new
configuration should not require the factory, but indeed be something directly:
{{Configurator.setConfiguration(Configuration)}}
or
{{LoggerContext.set/start/update(Configuration)}}
It is unclear to me how a new configuration can be fed to the context. There
are two methods that might work: updateLoggers and start.
I believe there can be mutlple contexts; if there are or could be indeed
multiple contexts in a logging system, then it becomes adamant to give the
Configuration to the right one; in other cases I don't really know what
{{initialize()}} does, in fact it _returns_ a LoggerContext. It would seem
required to use this LoggerContext to change the current configuration?
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]