I'll let folks focus on their evaluations and I'll work on the sample plugins 
and classloader isolation.

On Dec 12, 2012, at 9:23 AM, Stephen Connolly <stephen.alan.conno...@gmail.com> 
wrote:

> On Wednesday, 12 December 2012, Daniel Kulp wrote:
> 
>> 
>> On Dec 12, 2012, at 8:45 AM, Stephen Connolly <
>> stephen.alan.conno...@gmail.com <javascript:;>> wrote:
>> 
>>> Another criteria that people should pay attention to is whether the
>>> implementation supports Mapped Diagnostic Contexts
>>> http://logback.qos.ch/manual/mdc.html
>>> 
>>> AFAIU this may rule out JUL as a serious implementation... In other words
>>> when we want to start using MDCs to make it easier to navigate the logs,
>> if
>>> the implementation we choose does not support MDCs then we would need to
>>> choose again.
>> 
>> Well, if have to write our jul formatter to handle the WARN -> WARNING
>> thing, we could handle this as well.   slf4j-jdk14 sticks a
>> BasicMDCAdapater on there that just stores the context in a ThreadLocal.
>> Nothing uses it, but the data would be there.   Our formatter could grab
>> the MDC and use it if we wanted it to.
> 
> 
> I cannot recall if JUL guarantees that the formatter will be called from
> the same thread as the log record was generated on.
> 
> If it maintains that as an invariant then we could rescue JUL as a possible
> implementation
> 
> If not then I fear it us dead in the water
> 
> -Stephen
> 
>> 
>> Not saying that we SHOULD do this, just that we could, particularly if we
>> did write a formatter.
>> 
>> Dan
>> 
>> 
>> 
>> 
>>> 
>>> According to the slf4j website logback and log4j support MDCs (I am
>>> presuming that log4j2 does also therefore)
>>> 
>>> On Tuesday, 11 December 2012, Stephen Connolly wrote:
>>> 
>>>> Given that some people are already confused as to what the exact
>> question
>>>> is
>>>> I think we should clarify exactly what is the decision that is being
>> asked.
>>>> 
>>>> There has already been a decision to use the slf4j API for logging
>> within
>>>> core.
>>>> 
>>>> *  The vast majority of plugins will still use the Maven Log interface
>> for
>>>> their logging.
>>>> 
>>>> *  A small limited number of plugins with specific needs will use the
>>>> slf4j API that
>>>>  is exposed by core directly, but those plugins will have to do some
>>>> work in
>>>>  order to ensure that they work with Maven pre 3.1.0 as well as Maven
>>>> post 3.1.0
>>>> 
>>>>  My understanding is that they will have to add a slf4j implementation
>>>> to their
>>>>  dependencies... on Maven 3.1.0+ the implementation will be ignored as
>>>> the
>>>>  slf4j-api that they see on their classpath will already have been
>>>> initialized with
>>>>  core's implementation. On Maven pre-3.1.0 their slf4j-api will be
>>>> initialized and
>>>>  find their slf4j implementation.
>>>> 
>>>> *  A smaller subset of plugins need to control the slf4j implementation
>>>> and
>>>>  cannot have a different implementation. Those plugins will have to add
>>>> a
>>>>  metadata flag requesting a classloader that is isolated from core's
>>>> slf4j API.
>>>>  Such plugins might be redirecting log output for processing, or some
>>>> other
>>>>  need that we have not foreseen.
>>>> 
>>>>  On Maven 3.1.0 if the metadata flag is not present the plugin will
>>>> likely be
>>>>  borked and a newer version with the metadata flag will need to be
>>>> released
>>>>  [Though the precise behaviour in the absence of this flag is yet to be
>>>> defined]
>>>>  When the flag is enabled, the Maven Log interface will be the way the
>>>> plugin
>>>>  is required to route the information it wants logged to the user
>>>> through to
>>>>  the user.
>>>> 
>>>>  On Maven pre-3.1.0 things will be as they always were, i.e. the Maven
>>>> Log
>>>>  interface is the way we prefer information to be logged through to the
>>>> user.
>>>> 
>>>> What is being discussed now is which *implementation* to use for the
>> Maven
>>>> CLI
>>>> commands by default in core starting with Maven 3.1.0.
>>>> 
>>>> There are a number of possible implementations:
>>>> 
>>>> *  SLF4J Simple was initially considered. This is a very limited logger
>>>> but would
>>>>  be able to produce logging output formatted the same as Maven
>> currently
>>>>  provides. *However* there is a regression caused for some of the
>>>> integration
>>>>  tests when using SLF4J and fixing those issues currently produces
>>>> performance
>>>>  regressions as well as the current uncertainty as to whether those
>>>> fixes will
>>>>  be accepted by Ceki (the SLF4J maintainer). For this reason SLF4J
>> Simple
>>>>  is currently being rejected on technical grounds (but if sufficient
>>>> developers
>>>>  really want to go with the "we don't want to choose a specific
>>>> implementation"
>>>>  choice, this is the implementation you would be selecting.
>>>> 
>>>> *  Logback is being proposed by Jason. AFAIK this implementation passes
>> on
>>>> the
>>>>  technical criteria. In other words no failing integration tests and no
>>>> significant
>>>>  performance regressions.
>>>> 
>>>> *  Log4j2 has been championed by Olivier. AFAIK this implementation
>> passes
>>>> on
>>>>  the integration tests. I am not sure of the performance technical
>> test.
>>>> One should
>>>>  note that Log4j2 is a new implementation and is not Log4j
>>>> 
>>>>  I hope that Olivier or somebody else can confirm the integration test
>>>> status of Log4j2
>>>>  as a back end implementation and provide information on the
>> performance
>>> --
>> Daniel Kulp
>> dk...@apache.org <javascript:;> - http://dankulp.com/blog
>> Talend Community Coder - http://coders.talend.com
>> 
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org <javascript:;>
>> For additional commands, e-mail: dev-h...@maven.apache.org <javascript:;>
>> 
>> 

Thanks,

Jason

----------------------------------------------------------
Jason van Zyl
Founder & CTO, Sonatype
Founder,  Apache Maven
http://twitter.com/jvanzyl
---------------------------------------------------------

To do two things at once is to do neither.
 
 -- Publilius Syrus, Roman slave, first century B.C.





Reply via email to