<div dir="ltr">Hi Ceki,<div><br></div><div style>first of all, here is my configuration file, I'm copy-pasting it as we have (is almost identical to the one from all applications we develop now):</div><div style><br></div>
<div style><div><?xml version="1.0" encoding="UTF-8"?></div><div><configuration debug="false"></div><div>    <contextName>TST-LOGBACK</contextName></div><div>    <jmxConfigurator/></div>
<div><br></div><div>    <turboFilter class="ch.qos.logback.classic.turbo.MarkerFilter"></div><div>        <Marker>PROFILER</Marker></div><div>        <OnMatch>ACCEPT</OnMatch></div>
<div>    </turboFilter></div><div><br></div><div>    <property name="AUDIT_LOG_DIR" value="/export/home/oracle/TESTS/tst" /></div><div>    <property name="AUDIT_LOG_FILE" value="tst-logback-audit.log" /></div>
<div>    <property name="PERF_LOG_DIR" value="/export/home/oracle/TESTS/tst" /></div><div>    <property name="PERF_LOG_FILE" value="tst-logback-perf.log" /></div><div>    <property name="LOG_DIR" value="/export/home/oracle/TESTS/tst" /></div>
<div>    <property name="LOG_FILE" value="tst-logback.log" /></div><div>    <property name="LOG_FILE_ROLLING" value="tst-logback" /></div><div><br></div><div>    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><br>
</div><div>        <prudent>true</prudent><br></div><div>        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"></div><div>            <!-- daily rollover with ${LOG_DIR}/${LOG_FILE_ROLLING}_%d{yyyy-MM-dd}.log --></div>
<div>            <!-- hourly rollover with ${LOG_DIR}/${LOG_FILE_ROLLING}_%d{yyyy-MM-dd_HH}.log --></div><div>            <!-- every minute rollover with ${LOG_DIR}/${LOG_FILE_ROLLING}_%d{yyyy-MM-dd_HH_mm}.log --></div>
<div>            <fileNamePattern>${LOG_DIR}/${LOG_FILE_ROLLING}_%d{yyyy-MM-dd_HH}.log</fileNamePattern></div><div>            <!-- keep 30 days' worth of history --></div><div>            <maxHistory>48</maxHistory></div>
<div>        </rollingPolicy></div><div>        <encoder></div><div>            <pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n</pattern></div><div>        </encoder></div><div>
    </appender></div><div><br></div><div>    <appender name="AUDIT_FILE" class="ch.qos.logback.core.FileAppender"></div><div>        <file>${AUDIT_LOG_DIR}/${AUDIT_LOG_FILE}</file></div>
<div>        <encoder></div><div>            <pattern>%date %level %logger{10} %msg%n</pattern></div><div>        </encoder></div><div>    </appender></div><div><br></div><div>    <appender name="PERF_FILE" class="ch.qos.logback.core.FileAppender"></div>
<div>        <file>${PERF_LOG_DIR}/${PERF_LOG_FILE}</file></div><div>        <encoder></div><div>            <pattern>%date [%thread] %logger{10} %msg%n</pattern></div><div>        </encoder></div>
<div>    </appender></div><div><br></div><div>    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"></div><div>        <encoder></div><div>            <pattern>%date %level [%file:%line] %msg</pattern></div>
<div>        </encoder></div><div>    </appender></div><div><br></div><div>    <logger name="com.oracle.sk.tst" level="trace" additivity="false"></div><div>        <appender-ref ref="FILE" /></div>
<div>    </logger></div><div><br></div><div>    <logger name="com.oracle.sk.tst.logback.TestLogbackServlet" level="info" additivity="false"></div><div>        <appender-ref ref="FILE" /></div>
<div>    </logger></div><div><br></div><div>    <logger name="AUDITOR" level="trace" additivity="false"></div><div>        <appender-ref ref="AUDIT_FILE" /></div><div>
    </logger></div><div><br></div><div>    <logger name="PROFILER" level="debug" additivity="false"></div><div>        <appender-ref ref="PERF_FILE" /></div><div>    </logger></div>
<div><br></div><div>    <root level="OFF"></div><div>        <appender-ref ref="FILE" /></div><div>    </root></div><div></configuration></div><div><br></div><div style>The prudent flag is there because I had troubles with truncating log files by our test people. They use "cat /dev/null/ > tst-logback_2013-04-17_10.log" to clear the log when they start testing. Without "prudent", application was not able to recover from it and was not logging anymore.</div>
<div style><br></div><div style>Maybe you want to look at complete testing project I use for solving this issue. I try to attach it to this email (don't know if attachments are allowed for this mailing list). And if you wish I can provide you with small (~2 min, ~13MB, FLV) video demostrating the behavior.</div>
</div><div style><br></div><div style>I did further testing and found one thing - after stopping and starting the app it was not able to recover even after rollover (on my dev machine with the testing project). The report from testing team says that they've seen it recovers when the new log file was rolled out, however now no one can remember if really :-) So I consider this as "not, it didn't recover" - at least I'm not able to prove that.</div>
<div style><br></div><div style>So after all, when I stop/start the app, it will stop logging...</div><div style><br></div><div style>Thank you for your help, I really appreciate it.<br></div><div style><br></div><div style>
Regards,</div><div style>rox</div><div style><br></div><div style>P.S.: BTW, even it has no impact to this issue, just for interest's sake, I think I found why I had lc.reset() in my code - in documentation, the example uses stop(), however the text above mentions reset().</div>
<div><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Apr 16, 2013 at 5:31 PM, ceki <span dir="ltr"><<a href="mailto:ceki@qos.ch" target="_blank">ceki@qos.ch</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
LoggerContext.close() is almost identical to<br>
LoggerContext.reset(). Here is the code:<br>
<br>
class LoggerContext ... {<br>
<br>
  public void stop() {<br>
    reset();<br>
    fireOnStop();<br>
    resetAllListeners();<br>
    started = false;<br>
  }<br>
}<br>
<br>
I don't think calling reset or close should make a difference. You want to release and close appenders which reset() does.  Could you post your configuration file?<div class="im"><br>
<br>
On 16.04.2013 16:59, Roxolid wrote:<br>
</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">
Hi Ceki,<br>
<br>
well, half-true in my case... I have that code in my<br>
contextDestroyed(..) method, however, for whatever reason I have<br>
lc.reset() instead of lc.stop there... Will change and test that once<br>
I'm back to my dev machine. I will let you know then.<br>
<br>
Thank you for your help.<br>
<br>
Regards,<br>
rox<br>
<br>
<br>
<br></div>
On Tue, Apr 16, 2013 at 4:01 PM, ceki <<a href="mailto:ceki@qos.ch" target="_blank">ceki@qos.ch</a> <mailto:<a href="mailto:ceki@qos.ch" target="_blank">ceki@qos.ch</a>>><div class="im"><br>
wrote:<br>
<br>
    Hi Rox,<br>
<br>
    Are you stopping logback when your application is stopped (and then<br>
    started)? The conextDestroyed method of<br></div>
    javax.servlet.__<u></u>ServletContextListener is a good place for invoking<br>
    such code:<br>
<br>
    import javax.servlet.__<u></u>ServletContextListener;<br>
    import javax.servlet.__<u></u>ServletContextEvent;<br>
    import org.slf4j.LoggerFactory;<br>
    import ch.qos.logback.classic.__<u></u>LoggerContext;<div class="im"><br>
<br>
    public class MyServletContextListener implements<br>
                                           ServletContextListener {<br>
<br></div>
       public void contextInitialized(__<u></u>ServletContextEvent sce) {<br>
       }<br>
<br>
       public void contextDestroyed(__<u></u>ServletContextEvent sce)  {<br>
         LoggerContext lc =<br>
                   (LoggerContext) LoggerFactory.__<u></u>getILoggerFactory();<div class="im"><br>
         lc.stop();<br>
    }<br>
<br>
    Please let us know if stopping logback as described above helps.<br>
<br>
<br>
    On 16.04.2013 15:06, Roxolid wrote:<br>
<br>
        Hi all,<br>
<br>
        I have a trouble with logback configuration under WebLogic 12c. My<br>
        application is using RollingFile Appender with<br>
        TimeBasedRollingPolicy<br>
        and the problem is it stops logging every time I stop and then<br>
        start the<br>
        application through WebLogic Console. However, the logging is<br>
        back when<br>
        a rollover occurs - in the new file logging continues...<br>
<br>
        Has anyone faced such behavior (and knows the solution)?<br>
<br>
        Thank you in advance.<br>
<br>
        Regards,<br>
<br>
        rox<br>
<br>
<br>
</div></blockquote><div class="HOEnZb"><div class="h5">
<br>
<br>
-- <br>
Ceki<br>
65% of statistics are made up on the spot<br>
______________________________<u></u>_________________<br>
Logback-user mailing list<br>
<a href="mailto:Logback-user@qos.ch" target="_blank">Logback-user@qos.ch</a><br>
<a href="http://mailman.qos.ch/mailman/listinfo/logback-user" target="_blank">http://mailman.qos.ch/mailman/<u></u>listinfo/logback-user</a><br>
</div></div></blockquote></div><br></div>