java - How to set logback configuration file at runtime? -


i have logback.xml file production , 1 different parameters on staging environment. code able automatically know @ runtime if on production or runtime. there way set logback configuration file @ runtime?

method 1: loading different files

you can hold 2 different configurations files , load file specific enviroment joranconfiguratior#doconfigure @ application startup.

see http://logback.qos.ch/manual/configuration.html#jorandirectly. example code taken there modifications case:

public class myapp3 {   final static string staging_configuration = "/path/to/statging.xml";   final static string production_configuration  = "/path/to/production.xml";    final static logger logger = loggerfactory.getlogger(myapp3.class);    public static void main(string[] args) {     // assume slf4j bound logback in current environment     loggercontext context = (loggercontext) loggerfactory.getiloggerfactory();      // determine environmental specific configuration path     final string path = isprodcution() ?  production_configuration : staging_configuration;      try {       joranconfigurator configurator = new joranconfigurator();       configurator.setcontext(context);       // call context.reset() clear previous configuration, e.g. default        // configuration. multi-step configuration, omit calling context.reset().       context.reset();        configurator.doconfigure(path);     } catch (joranexception je) {       // statusprinter handle     }     statusprinter.printincaseoferrorsorwarnings(context);      logger.info("entering application.");      foo foo = new foo();     foo.doit();     logger.info("exiting application.");   } } 

of course, code getting correct filename adjusted fitting needs. futhermore, there overloaded doconfigure methods (http://logback.qos.ch/apidocs/ch/qos/logback/core/joran/genericconfigurator.html#doconfigure%28java.io.file%29) takes inputstreams, files , urls als well.

method 2: using conditionals in 1 file

if can determine enviroment using logbag's build in properties or system properties, can use conditional configurations:

http://logback.qos.ch/manual/configuration.html#conditional

<!-- if-then form --> <if condition="condition production">     <then>        ...     </then>     <else>        ...     </else> </if> 

Comments

Popular posts from this blog

powershell Start-Process exit code -1073741502 when used with Credential from a windows service environment -

twig - Using Twigbridge in a Laravel 5.1 Package -

c# - LINQ join Entities from HashSet's, Join vs Dictionary vs HashSet performance -