[logback-user] Can logging configuration files be separated when using ContextJNDISelector?
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
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
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()
> // the context was probably already configured by default
> configuration rules
> val stream = configurationAsStream(data)
> 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.
> 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
More information about the Logback-user