Just letting you know I did NOT read your email beyond the first 2 paragraphs. 
It is just way too long. Please summarize if you have something important to 
say.

Ralph

> On Aug 16, 2015, at 1:29 AM, Xen <x...@dds.nl> wrote:
> 
> Op 15-8-2015 om 17:36 schreef Gary Gregory:
> 
>> I think we are also in limbo so to speak as to what to do WRT providing a 
>> programmatic interface for configuration. We have factory methods, a few 
>> builder classes, but probably not a clear road map. We all need to think 
>> about the big picture before we continue sprinkling builder classes all over 
>> the place. 
>> 
>> Should such an API be part of the Core or a new log4j-config module where 
>> all configuration code would sit? We probably still do not want it as part 
>> of the public API? Should the config API aim to configure the Core or any 
>> supported logging back-end? Surely we would only start with the Core and 
>> worry about the rest later. Or should we? I'm asking a lot of questions I 
>> know.
>> 
>> How do we even discuss this via emails? That's a lot of writing! Is there 
>> are better way to discuss this instead?
>> 
>> Gary
> 
> Actually first thing I think additional builder classes can't hurt really 
> because they don't really change the API in any way except by creating a 
> convenience that Core-modifiers can use and there is very little chance at 
> this point of them needing to be removed again.
> 
> Also removing them can't be hard unless they have been in there for a while 
> and code has been built against it. What of course the "public API" sees to 
> avoid.
> 
> But which it of course doesn't do, maybe for the majority of corporate users, 
> but certainly not for people like me. (I read a wildly megalomanous advert 
> for a software developer today that basically required perfect programming 
> skills from knowing every important language to being "fluid in cross-browser 
> issues" to being wonderfully communicative to taking pride in writing 
> /standards-compliant code/.). Well if standards-complicance is not using the 
> Core API directly, then maybe everything you've said and done is true ;-).
> 
> Seriously.
> 
> Anyway. The questions.
> 
> From what I /see/ happening is that there is going to be some effort in 
> having a nicer interface that does not really need to use individual 
> builders. On the other hand I don't know why other code shouldn't use it but 
> if you derive fields/inputs/values from a config file, then maybe calling 
> individual builder methods is not useful and a create method is better 
> suited. I generally think at     this point that you should leave that like 
> that.
> 
> So programmatic control, me being a layman, depends on two things:
> 
> - would it really be something that the core developers want? In that case 
> the error message from not having a config file should leave/depart. If 
> config files stop being fully completely totally solely centric, then the 
> initialization code (this is just ConfigurationFactory.java) should not give 
> an error, however it could still be a warning an info or even a debug, as 
> they don't make it through to the StatusLogger in the default config. So the 
> obvious first thing to do is to supply a patch to change that ERROR level to 
> WARN.
> 
> - at that point you are really 'bug' free to do either XML/JSON/whatever 
> config, or programmatic config. The second thing that is important then is 
> whether you want to keep focussing solely on ConfigurationFactories or 
> whether you want an application to be able to for instance create some 
> personal Logging.init() method or whatever to initialize the system 
> programmatically. The difference is at that point: do we SubClass a 
> ConfigurationFactory (and craft a configuration in it using programmatic 
> control) or do we SubClass a ConfigurationFactory as well as an 
> AbstractConfiguration that will then use programmatic control (or even other 
> means) inside its constructor/initializer, or do we agree or find outselves 
> in agreement with just using a DefaultConfiguration as it is returned and 
> adjusting that?.
> 
> Those are three different levels of involvement.
> 
> 1. Free to use the API from the outside.
> 2. Need to subclass a factory to do it from within (as if you are part of the 
> core yourself now)
> 3. Need to subclass a factory and even create a new /type/ of configuration 
> (as if you are really deeply mired into the core now).
> 
> Currently my program that I haven't worked on for days now ;-)...
> 
> Has just created its own package ( .log ) with a class (Logging) that does 
> everything I need to do configuration wise. At that point, for instance, I am 
> at the choice of whether to stay outside as much as I can, or to let myself 
> be absorbed into Core by subclassing a factory. Currently my .log package 
> does have a factory but it is to avoid the ERROR level message for not having 
> a configuration file.
> 
> Customizing something really requires staying outside as you deal with the 
> system, because otherwise you ar really writing a form of plugin and you are 
> extending the system just as a way of configuring it.
> 
> I don't know about the Configurator I must say, it didn't or doesn't seem to 
> do (mostly didn't) the things I wanted from it / from the system.
> 
> Now of course the endeavour by that can't remember his name to create a 
> ConfigurationBuilder would fit probably the mark of extending the system in 
> order that another won't have to do it anymore.
> 
> But you have to make these two choices, I can't do it for you:
> 
> 1. Do you want programmatic configuration to be an equivalent or 
> near-equivalent to config-file based control?
> 2. Do you want it to be an interface-only element (outside access to 
> configuration methods) a core element that requires factory substantiation or 
> a core element that requires factory substantiation and configuration 
> descendent substantiation?.
> 
> I think the rest of your choices will follow automatically once you've made 
> these choices and become clear on them. I cannot really say anything about it 
> because my preferences are already known and I like to deal with an interface 
> only, and this was the original goal of the public / separatist API. I am 
> currently actually doing the first of these three things, and so I answer 
> these two questions with a "yes" and a "the first".
> 
> But the rest is up to you, you have to decide, I can't work with you if you 
> don't because it will be up in the air and you will do something random.
> 
> Regards...
> 
> B. 

Reply via email to