Hi Martin,

More information about the bridge can be found in
https://www.slf4j.org/legacy.html#log4j-over-slf4j

Terence

On Thu, Feb 9, 2017 at 11:19 AM, Terence Yim <cht...@gmail.com> wrote:

> Hi Martin,
>
> Twill has a logback Appender implementation for capturing logs emitted via
> slf4j api from runnable and publish them to the embedded Kafka running
> inside the AM process. If you are using log4j as the API for emitting logs,
> what you can do is to use the log4j-over-slf4j bridge to have logs emitted
> via the log4j API get bridged to slf4j.
>
> I suspect why you are seeing the class missing error is most likely
> because you have the slf4j to log4j bridge (the reverse of the one I
> mentioned above, look for a jar with name containing "slf4j-log4j12" in the
> client classpath) that comes earlier in the classpath then the logback jars.
>
> Terence
>
> On Thu, Feb 9, 2017 at 10:47 AM, Martin Serrano <mar...@attivio.com>
> wrote:
>
>> Henry,
>>
>> I see this behavior deploying with YARN 2.7.1, HDP 2.3.  But I'm not sure
>> you understood my issue.
>>
>> * The logback jar dependency is only picked up if it is on the classpath
>> when the bundle is created.
>> * With logback in my twill client classpath, the appmaster starts fine.
>> However without logback in my client classpath the appmaster will get a
>> ClassNotFoundException.
>> * We use log4j and with logback in my client classpath, it takes over the
>> slf4j bindings and I lose control of the client logging.
>>
>> So my question was about whether this is expected or if there is a
>> well-known procedure for working around it.  It seems there should be a way
>> to tell the twill system to where to find the appmaster dependencies
>> without having them in the classpath of the twill client.
>>
>> Thanks!
>> -Martin
>>
>>
>> On 02/08/2017 08:09 PM, Henry Saputra wrote:
>>
>>> But the logback dependency should be included in the jar packaging that
>>> YARN client sends for Twill ApplicationMaster.
>>>
>>> Are you seeing this behavior in deploying Twill app in latest YARN?
>>>
>>> - Henry
>>>
>>> On Wed, Feb 8, 2017 at 12:30 PM, Martin Serrano <mar...@attivio.com>
>>> wrote:
>>>
>>> Hey Devs,
>>>>
>>>> It seems like the twill project goes through some pain to try to
>>>> insulate
>>>> itself logging frameworks.  I see use of the slf4j API. However, the
>>>> appmaster code has a dependency on logback via the
>>>> org.apache.twill.internal.logging.Loggings class.   The appmaster will
>>>> not start up without this dependency present.  With the dependency code
>>>> as
>>>> it is now, there is no way to include the logback jar in the generated
>>>> bundle without it being on the current classpath.  I've created a ticket
>>>> (TWILL-215) to make a missing dependency trigger an exception at bundle
>>>> generation time rather than appmaster execution time.
>>>>
>>>> When the logback jar is on my classpath, my client code picks up logback
>>>> instead of our current logger (log4j).  Is this what is expected?  Is
>>>> there
>>>> any known workaround?  It seems like there may be a case for specifying
>>>> dependencies of the appmaster that are located outside of the current
>>>> jvm
>>>> classpath.
>>>>
>>>> Thanks,
>>>> Martin
>>>>
>>>>
>>>>
>>
>

Reply via email to