<div dir="ltr">Hi,<div><br></div><div>  I am using logback with Spring logback extension. The exact log location is determined at runtime through the "webAppRootKey" context param, that mentioned in WebLogbackConfigurer</div>
<div><br></div><div>  In web.xml,</div><div><br></div><div><div>    <context-param></div><div>        <param-name>webAppRootKey</param-name></div><div>        <param-value>myApp.root</param-value></div>
<div>    </context-param></div></div><div><br></div><div><br></div><div>  In logback.xml,</div><div>    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"></div><div>
        <rollingPolicy</div><div>            class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"></div><div>            <FileNamePattern>${myApp.root}/../../logs/${FILE_NAME_PREFIX}.%d.log.zip</FileNamePattern></div>
<div>        </rollingPolicy><br></div><div>        <encoder></div><div>            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{32} - %msg%n</pattern></div><div>        </encoder></div>
<div>    </appender></div><div><br></div><div><br></div><div>  The issue is during logback initialization, it will scan the logback.xml automatically but the ${myApp.root} is not yet resolved, due to Spring Web Application Context is initialized lazily. The log entry could not write to log file successfully.</div>
<div><br></div><div>  The workaround solution is the program "touch" the logback.xml again during @PostConstruct phase after Spring Web Application Context is constructed. Logback will scan the change of logback.xml some time later and at that time the ${myApp.root} is correctly resolved.</div>
<div><br></div><div>e.g.</div><div><br></div><div><div>    @PostConstruct</div><div>    void init() {</div><div>        try {</div><div>            ClassPathResource logbackResource = new ClassPathResource(logback.xml);</div>
<div>            File logbackConfigFile = logbackResource.getFile();</div><div>            FileUtils.touch(logbackConfigFile);</div><div>        } catch (IOException ioe) {</div><div>            throw new RuntimeException(ioe);</div>
<div>        }</div><div>    }</div></div><div><br></div><div>   Is there a way that I could disable the auto scanning of logback.xml during initialization? Or defer until ch.qos.logback.ext.spring.web.LogbackConfigListener is well configured?</div>
</div>