JWT007 commented on issue #3368:
URL: 
https://github.com/apache/logging-log4j2/issues/3368#issuecomment-2579555721

   Hi @vy ,
   
   as I mentioned, we have a few things going on.
   
   Here I will try and provide some rough details but it is not  "relevant" to 
this ticket directly.
   
   1. we are using a CompositeConfigurration - we have a sort of framework 
based on WAR overlays and our distribution can be extended in projects - 
including the Log4j configuration. (So some XML comes from the WARs 
(read-only), some is dynamic (no XML), and finally the last is quasi the 
"editable" external-configuration).
   
   2. In our CompositeConfiguration hierarchy, we have a runtime-only (no XML) 
configuration which generates service-appenders/loggers on-the-fly if a service 
is added/removed.
   
   3. We need to present the original configuration (as-is) to our client UI - 
which we cannot extract from a constructed Configuration object - hidden 
fields, converted attributes, etc.   We also need to provide the merged view - 
i.e. performing the DefaultMergeStrategy behaviour on the "XML" configuration 
instead of the runtime configuration.
   ---
   I am a big fan of fluent APIs - the ConfigurationBuilder is OK but unwieldy 
for a lot of content or for dynamic changes.
   
   Also, it doesn't really document the behaviour very well in some cases:
   
   For example, this will throw NPEs (trying to represent an undefined 
onResult/onMismatchResult).
   
   ```
   var filterBuilder =
           configBuilder.newFilter("BurstFilter",
                                   (Filter.Result) null,
                                   (Filter.Result) null);
   ```
                                   
   ...but this will probably not - (but it will put null attrribute values in 
the backing map - don't know if that causes problems downstream):
   
   ```
   var filterBuilder =
           configBuilder.newFilter("BurstFilter",
                                   (String) null,
                                   (String) null);
   ```
   
   Of course, this would be easier if I could take any configuration X and use 
it to re-generate the XML representation at runtime - but that unfortunately is 
not possible.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscr...@logging.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to