Is it really necessary to have getLogger support FlowMessageFactory?  These 
messages are really meant as wrappers for other messages. so I am not even sure 
what it would mean for getLogger() to support that. How would it know what 
Message it is wrapping?

I am really getting sorry that I started this.

Ralph

> On Feb 18, 2016, at 3:31 PM, Gary Gregory <[email protected]> wrote:
> 
> On Thu, Feb 18, 2016 at 2:13 PM, Remko Popma <[email protected] 
> <mailto:[email protected]>> wrote:
> I think preserving binary compatibility on its own is a strong reason for 
> doing this, but it's more than that. 
> 
> OK, since org.apache.logging.log4j.message.MessageFactory is in log4j-api 
> that's important. I can buy that. BUT, we are also adding methods to Logger 
> so that would break some things too. I guess less breakage is better than 
> more in this case!
> 
> Overall, I not convinced that this is the best approach but I can appreciate 
> that you seem to feel about it stronger that I do.
>  
> 
> Having a separate factory for flow messages makes both factories more 
> cohesive (single responsibility principle). No need for one factory to extend 
> the other in my view.  
> 
> The distinction is pretty subtle here IMO. We are still talking about 
> creating messages, but I get your point. For me, the only reason for this is 
> to minimize the risk of API breakage, a nobe goal for the log4j-api module, 
> if not a requirement.
>  
> 
> The logger would have separate instances so users can configure them 
> separately: lower coupling. 
> 
> OK. So now we have:
> 
> org.apache.logging.log4j.LogManager.getLogger(Class<?>, MessageFactory)
> org.apache.logging.log4j.LogManager.getLogger(Object, MessageFactory)
> org.apache.logging.log4j.LogManager.getLogger(String, MessageFactory)
> 
> We would add:
> 
> org.apache.logging.log4j.LogManager.getLogger(Class<?>, MessageFactory, 
> FlowMessageFactory)
> org.apache.logging.log4j.LogManager.getLogger(Object, MessageFactory, 
> FlowMessageFactory)
> org.apache.logging.log4j.LogManager.getLogger(String, MessageFactory, 
> FlowMessageFactory)
> 
> Right? Any other places?
>  
> 
> These are both desirable properties so I believe it would improve the design. 
> 
> Does this make sense?
> 
> Sure, even though I am less gun-ho about it than you are. I'd say go ahead, 
> see how it looks and feels after you refactor. We can keep discussing it once 
> your changes hits the repo if need be.
> 
> Thank you for putting in the work!
> Gary 
> 
> Remko
> 
> Sent from my iPhone
> 
> On 2016/02/19, at 2:24, Gary Gregory <[email protected] 
> <mailto:[email protected]>> wrote:
> 
>> Is a flow message factory a kind of message factory or a different kind of 
>> factory? 
>> 
>> Does a logger need instances of both or just the one?
>> 
>> Since entry message extends message, should the factory do so as well?
>> 
>> Gary, phone, typos.
>> 
>> On Feb 18, 2016 8:44 AM, "Remko Popma" <[email protected] 
>> <mailto:[email protected]>> wrote:
>> Would anyone mind terribly if I factored out the FlowMessage creation 
>> methods from MessageFactory to a new interface FlowMessageFactory?
>> 
>> Concretely, this interface would contain the methods introduced in 
>> LOG4J2-1255:
>> EntryMessage newEntryMessage(Message message);
>> ExitMessage newExitMessage(Object object, Message message);
>> ExitMessage newExitMessage(EntryMessage message);
>> ExitMessage newExitMessage(Object object, EntryMessage message);
>> I think flow messages are different enough from normal Messages that a 
>> separate factory makes sense. 
>> It would also insulate users who created a custom MessageFactory from the 
>> changes we made in LOG4J2-1255. 
>> Thoughts? 
>> -Remko
>> 
> 
> 
> 
> -- 
> E-Mail: [email protected] <mailto:[email protected]> | 
> [email protected]  <mailto:[email protected]>
> Java Persistence with Hibernate, Second Edition 
> <http://www.manning.com/bauer3/>
> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
> Spring Batch in Action <http://www.manning.com/templier/>
> Blog: http://garygregory.wordpress.com <http://garygregory.wordpress.com/> 
> Home: http://garygregory.com/ <http://garygregory.com/>
> Tweet! http://twitter.com/GaryGregory <http://twitter.com/GaryGregory>

Reply via email to