[logback-user] Can logging configuration files be separated when using ContextJNDISelector?

Ville Hägg villeah at gmail.com
Wed Mar 20 20:21:29 CET 2013


Hi and thank for your reply,

I have same kind of initialization routine in place (at least I think). 
Code below is implemented in my shared library (ServletContextListener - 
if that matters) and both web apps are using the listener (path to the 
application specific configuration file is given with web context 
parameter). After configuration routine have finished, I can see from 
status messages, that web app B have initialized also rolling appender 
from web app A configuration.

Can JBoss module's shared classloader somehow mess logging context used 
in logback implementation? I have started to suspect some of 
classloading issues, because I am also facing following scenario during 
the JBoss startup:
1. Application A tries to invoke LoggerFactory.getILoggerFactory --> 
doesn't get the correct LoggerContext because underlying logback is not 
initialized properly(?)
2. Almost at the same time Application B tries to invoke 
LoggerFactory.getILoggerFactory --> Correct LoggerContext is retrieved 
and initialization continues
3. In step 1 I check if correct context is not returned, I put the 
thread to sleep for 15 seconds. After thread becomes active again, I can 
get correct LoggerContext and can do the initialization

Ville

On 20.3.2013 20:39, Donald McLean wrote:
> The standard way for Logback to work, configuration is from the
> logback.xml file.
>
> I had a similar problem in that I wanted to be able to feed Logback a
> custom configuration that came from somewhere else. This is the code
> that I wrote to do the configuration:
>
>      val lc = LoggerFactory.getILoggerFactory.asInstanceOf[LoggerContext]
>
>      val configurator = new JoranConfigurator()
>      configurator.setContext(lc)
>      // the context was probably already configured by default
> configuration rules
>      lc.reset()
>
>      val stream = configurationAsStream(data)
>      configurator.doConfigure(stream)
>
> The code is in Scala, but it translates pretty easily since it's
> pretty much all just function calls. The important part is the call to
> "configurationAsStream", where I create an input stream containing the
> logback configuration that I want the app to use.
>
> Donald
>
> On Wed, Mar 20, 2013 at 2:29 PM, Ville Hägg <villeah at gmail.com> wrote:
>> Hi all,
>>
>> I need to clarify if I have understood logging separation correctly.
>>
>> I have almost the same scenario than described e.g. in this question:
>> http://mailman.qos.ch/pipermail/logback-user/2010-March/001442.html. In my
>> environment I have most of the application logic deployed to JBoss 7 as a
>> JBoss module. Module have my shared libraries for common parts of the
>> application as well as third party libraries (like Logback and Spring). My
>> own custom shared implementations are using logging in a standard way by
>> instantiating loggers as a static class variables.
>>
>> I am also having two war-applications which are using module described.
>> Requirement is to have own logging context for each of the application.
>> Which means applications should have their own log files, log levels and
>> root loggers etc. I have tried to introduce JNDIBasedContextDiscriminator
>> together with ShiftingAppender with no luck. My problem is that after my
>> applications are initialized, it seems both of them is somehow sharing the
>> same appenders. If I view status messages servlet, I can see that
>> application B have initialized also RollingFileAppenders configured in
>> application A's configuration file or other way round. RollingFileAppenders
>> are wrapped inside SiftingAppender in both configuration files.
>>
>> Can anyone clarify to me can two applications using shared libraries have
>> strictly separated configuration files which are introducing own loggers,
>> appenders and logging levels? Or do I still have some kind of configuration
>> problem with my setup?
> _______________________________________________
> Logback-user mailing list
> Logback-user at qos.ch
> http://mailman.qos.ch/mailman/listinfo/logback-user



More information about the Logback-user mailing list