Setting logback.xml path programmatically

后端 未结 5 1117
我在风中等你
我在风中等你 2020-12-02 13:27

I know I can set the logback.xml path like this:

Specifying the location of the default configuration file as a system property

You may specif

相关标签:
5条回答
  • 2020-12-02 13:33

    modifying environment variables might not always be feasible. To do it properly see logback manual:

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

    0 讨论(0)
  • 2020-12-02 13:41

    Include another logback xml to change path in logback-spring.xml

    include resource = "/path/to/logback.xml"

    add data within included tags in logback.xml

    0 讨论(0)
  • 2020-12-02 13:43

    I just want to share what I did in the end with a Jersey-Spring app:

    MyWebApplicationInitializer implements WebApplicationInitializer {
        @Override
        public void onStartup(final ServletContext servletContext) throws ServletException {
            servletContext.addListener(new LogbackConfigListener());
            try { LogbackConfigurer.initLogging(servletContext.getRealPath("/WEB-INF/logback.xml")); }
            catch (FileNotFoundException | JoranException e) { e.printStackTrace(); }
        }
    }
    

    I also have to add, that I had to move

    <dependency>
        <groupId>org.logback-extensions</groupId>
        <artifactId>logback-ext-spring</artifactId>
        <version>0.1.4</version>
        <scope>compile</scope></dependency>
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-core</artifactId>
        <version>1.2.3</version>
        <scope>compile</scope></dependency>
    

    from runtime (parent project in my case) to compile.

    0 讨论(0)
  • 2020-12-02 13:49

    You could use:

    System.setProperty("logback.configurationFile", "/path/to/config.xml");
    

    But it would have to happen before logback is loaded, i.e. something like:

    class Main {
      static { System.setProperty("logback.configurationFile", "/path/to/config.xml");}
      private final Logger LOG = LoggerFactory.getLogger(Main.class);
    
      public void main (String[] args) { ... }
    }
    

    Note: I have not tested it but it should work.

    0 讨论(0)
  • 2020-12-02 13:52
    LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
    loggerContext.reset();
    JoranConfigurator configurator = new JoranConfigurator();
    InputStream configStream = FileUtils.openInputStream(logbackPropertiesUserFile);
    configurator.setContext(loggerContext);
    configurator.doConfigure(configStream); // loads logback file
    configStream.close();
    
    0 讨论(0)
提交回复
热议问题