[logback-user] How to use different xml settings file for logback depending on run.mode

Olek Swirski olekswirski at gmail.com
Thu Sep 20 23:53:45 CEST 2012


ceki, this helped me a lot :) used 3) like so:

     /* Calculate run.mode dependent path to logback configuration file.
      * Use same naming scheme as for props files.  */
     val logbackConfFile = {
       val propsDir = "props"
       val fileNameTail = "default.logback.xml"
       val mode = System.getProperty("run.mode")
       if (mode != null) propsDir + "/" + mode + "." + fileNameTail
       else propsDir + "/" + fileNameTail
     }
     /* set logback config file appropriately */
     System.setProperty("logback.configurationFile", logbackConfFile)

On 20/09/12 22:39, ceki wrote:
> Hi Olek,
>
> I can think of three techniques at your disposal. Moreover, they may 
> be combined if necessary.
>
> 1) conditional processing of config files
>
> See http://logback.qos.ch/manual/configuration.html#conditional
>
> This option requires the Janino library. You would have a single 
> config file parts of which would be activated depending on the value 
> of the
> run.mode property.
>
> 2) file inclusion
>
> See http://logback.qos.ch/manual/configuration.html#fileInclusion
>
> The included file would be a system property, say "includedFile". You 
> would be responsible for setting "includedFile". Here is a sample 
> logback.xml file:
>
> configuration>
> <include file="${includedFile:-/path/to/default/logback.xml}"/>
>
>   other configuration directives common to various modes go here...
>
> </configuration>
>
> The above uses default values for variables.
> See http://tinyurl.com/bmxcj5w
>
>
> 3) Specifying the location of the default configuration file as a 
> system property
>
>   http://logback.qos.ch/manual/configuration.html#configFileProperty
>
> This third option is probably the simplest. You programmatically set 
> the  "logback.configurationFile" system property to point to the 
> appropriate config file.
>
>
> BYW, you can reset any existing configuration by invoking:
>
>   LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
>   lc.reset();
>
> Let us know how it goes.


More information about the Logback-user mailing list