[logback-user] question about start-up process and disabling auto-configuration

Rob Ross rob.ross at gmail.com
Thu Dec 4 03:24:27 CET 2008


Let me share my use-case, and how I'm using logback, and maybe you can  
suggest a better way of using it.

In this case I'm writing a Swing desktop application that will talk to  
something on the back-end, either a database directly, or an app server.

I have a properties file that among other things, has a flag for  
controlling the run-time environment, either in Dev, Test, or  
Production mode.

It's a single switch that causes various classes and database  
connections to be used depending on the value. E.g., in Test mode I  
connect to the Test database, in Prod mode I connect to the Production  
database. I have an ant build script that has discrete targets for  
making a production build, or  a test build, etc. One of the tasks is  
to set the switch to the right value (Dev/Test/Prod).

I  have set up two logback configuration files, a logback.xml, and a  
logback-test.xml. The test version is set up for more low-level  
logging among other things.

I have a LoggingUtils class that queries the environment property and  
then reads in either the logback.xml or logback-test.xml, and calls  
doConfigure() with the appropriate config file.

I have both config files in the classpath. Perhaps I should not do  
this, but it makes it easier to keep them in the same resource  
directory when I have to edit it. Usually I want to add common  
functionality to both at the same time.

But what happens is when the app starts up, it always loads the  
logback-test.xml file, which is set with "debug = true" attribute. So  
even when I'm running the production version of the app, first the  
test config file is auto-loaded, then I manually load the production  
config file and call doConfigure(). But since the test file is loaded  
automatically, it prints out the config information, since it's using  
the debug=true option.

So, I'm probably not using this correctly, but hopefully now that you  
understand what I'm trying to do you can suggest a better way of using  
the tool.

Thanks,

Rob

So if there was some way to
On Dec 3, 2008, at 1:40 PM, Ceki Gulcu wrote:

> Hello Rob,
>
> There should be no status messages printed during automatic (default)
> configuration, unless errors occur.
>
> Are you saying that automatic configuration using logback.xml fails  
> because of
> missing variables which you fill in when you call doConfigure()?
>
> If you know how to find the configuration file, why don't you rename
> "logback.xml" to something else so that it does not get picked up?
>
> BTW, there is no way to disable automatic configuration. However,  
> you can set a
> system property to specify a different configuration file URL.
> For more details, search for "Specifying the location of the default
> configuration file as a system property" in http://logback.qos.ch/manual/joran.html
>
>
> Rob Ross wrote:
>> Is there a way to disable the auto-configuration at startup? One of
>> the first things my app does is locate the right configuration file
>> (logback.xml) to use for the current environment and calls
>> doConfigure().
>>
>> But, when the app first starts up, it automatically configures  
>> Logback
>> and prints out the debug information to System.out. Since I
>> immediately re-configure logback, this seems like a waste and the
>> status messages are also extraneous.
>>
>> Is there a way to suppress the auto-configuration at startup so I can
>> handle it myself? Or at least not print out those auto-configuration
>> messages on System.out?
>>
>> Thanks!
>>
>> Rob
>
> -- 
> Ceki Gülcü
> Logback: The reliable, generic, fast and flexible logging framework  
> for Java.
> http://logback.qos.ch
> _______________________________________________
> Logback-user mailing list
> Logback-user at qos.ch
> http://qos.ch/mailman/listinfo/logback-user



More information about the Logback-user mailing list