Hi Ceki, ouch, I didn't notice that debug flag! Just copied the configuration file from the real application we use... Nevertheless, when I changed it, redeployed and tested again, the only thing I can see in the server's log is:
13:03:47,487 |-INFO in ch.qos.logback.classic.jmx.JMXConfigurator(TST-LOGBACK) - onReset() method called JMXActivator [ch.qos.logback.classic:Name=TST-LOGBACK,Type=ch.qos.logback.classic.jmx.JMXConfigurator] When I (re)deploy the app, I can see (as expected) a lot of statements from Logback during its initialization. However, when I stop/start the application, nothing like that happens. Looks like logback is not reinitializing in such case. Thank you. Best regards, rox On Wed, Apr 17, 2013 at 11:59 AM, ceki <[email protected]> wrote: > It very much helps to set <configuration debug="true"> when diagnosing > logback-related problems. If debug="true" logback might actually tell you > why it stops logging after app restart. I suspect that the underlying issue > is caused by jmxConfigurator which probably throws an exception the second > time it is started in your particular environment. > > > > > On 17.04.2013 11:45, Roxolid wrote: > >> Hi Ceki, >> >> 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): >> >> <?xml version="1.0" encoding="UTF-8"?> >> <configuration debug="false"> >> <contextName>TST-LOGBACK</**contextName> >> <jmxConfigurator/> >> >> <turboFilter class="ch.qos.logback.classic.**turbo.MarkerFilter"> >> <Marker>PROFILER</Marker> >> <OnMatch>ACCEPT</OnMatch> >> </turboFilter> >> >> <property name="AUDIT_LOG_DIR" value="/export/home/oracle/**TESTS/tst" >> /> >> <property name="AUDIT_LOG_FILE" value="tst-logback-audit.log" /> >> <property name="PERF_LOG_DIR" value="/export/home/oracle/**TESTS/tst" >> /> >> <property name="PERF_LOG_FILE" value="tst-logback-perf.log" /> >> <property name="LOG_DIR" value="/export/home/oracle/**TESTS/tst" /> >> <property name="LOG_FILE" value="tst-logback.log" /> >> <property name="LOG_FILE_ROLLING" value="tst-logback" /> >> >> <appender name="FILE" >> class="ch.qos.logback.core.**rolling.RollingFileAppender"> >> <prudent>true</prudent> >> <rollingPolicy >> class="ch.qos.logback.core.**rolling.**TimeBasedRollingPolicy"> >> <!-- daily rollover with >> ${LOG_DIR}/${LOG_FILE_ROLLING}**_%d{yyyy-MM-dd}.log --> >> <!-- hourly rollover with >> ${LOG_DIR}/${LOG_FILE_ROLLING}**_%d{yyyy-MM-dd_HH}.log --> >> <!-- every minute rollover with >> ${LOG_DIR}/${LOG_FILE_ROLLING}**_%d{yyyy-MM-dd_HH_mm}.log --> >> >> <fileNamePattern>${LOG_DIR}/${**LOG_FILE_ROLLING}_%d{yyyy-MM-** >> dd_HH}.log</fileNamePattern> >> <!-- keep 30 days' worth of history --> >> <maxHistory>48</maxHistory> >> </rollingPolicy> >> <encoder> >> <pattern>%date %level [%thread] %logger{10} [%file:%line] >> %msg%n</pattern> >> </encoder> >> </appender> >> >> <appender name="AUDIT_FILE" class="ch.qos.logback.core.** >> FileAppender"> >> <file>${AUDIT_LOG_DIR}/${**AUDIT_LOG_FILE}</file> >> <encoder> >> <pattern>%date %level %logger{10} %msg%n</pattern> >> </encoder> >> </appender> >> >> <appender name="PERF_FILE" class="ch.qos.logback.core.** >> FileAppender"> >> <file>${PERF_LOG_DIR}/${PERF_**LOG_FILE}</file> >> <encoder> >> <pattern>%date [%thread] %logger{10} %msg%n</pattern> >> </encoder> >> </appender> >> >> <appender name="STDOUT" class="ch.qos.logback.core.** >> ConsoleAppender"> >> <encoder> >> <pattern>%date %level [%file:%line] %msg</pattern> >> </encoder> >> </appender> >> >> <logger name="com.oracle.sk.tst" level="trace" additivity="false"> >> <appender-ref ref="FILE" /> >> </logger> >> >> <logger name="com.oracle.sk.tst.**logback.TestLogbackServlet" >> level="info" additivity="false"> >> <appender-ref ref="FILE" /> >> </logger> >> >> <logger name="AUDITOR" level="trace" additivity="false"> >> <appender-ref ref="AUDIT_FILE" /> >> </logger> >> >> <logger name="PROFILER" level="debug" additivity="false"> >> <appender-ref ref="PERF_FILE" /> >> </logger> >> >> <root level="OFF"> >> <appender-ref ref="FILE" /> >> </root> >> </configuration> >> >> 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. >> >> 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. >> >> 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. >> >> So after all, when I stop/start the app, it will stop logging... >> >> Thank you for your help, I really appreciate it. >> >> Regards, >> rox >> >> 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(). >> >> >> >> On Tue, Apr 16, 2013 at 5:31 PM, ceki <[email protected] <mailto:[email protected]>> >> >> wrote: >> >> >> LoggerContext.close() is almost identical to >> LoggerContext.reset(). Here is the code: >> >> class LoggerContext ... { >> >> public void stop() { >> reset(); >> fireOnStop(); >> resetAllListeners(); >> started = false; >> } >> } >> >> 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? >> >> >> On 16.04.2013 16:59, Roxolid wrote: >> >> Hi Ceki, >> >> well, half-true in my case... I have that code in my >> contextDestroyed(..) method, however, for whatever reason I have >> lc.reset() instead of lc.stop there... Will change and test that >> once >> I'm back to my dev machine. I will let you know then. >> >> Thank you for your help. >> >> Regards, >> rox >> >> >> >> On Tue, Apr 16, 2013 at 4:01 PM, ceki <[email protected] >> <mailto:[email protected]> <mailto:[email protected] <mailto:[email protected]>>> >> >> >> wrote: >> >> Hi Rox, >> >> Are you stopping logback when your application is stopped >> (and then >> started)? The conextDestroyed method of >> javax.servlet.____**ServletContextListener is a good place >> for invoking >> such code: >> >> import javax.servlet.____**ServletContextListener; >> import javax.servlet.____**ServletContextEvent; >> import org.slf4j.LoggerFactory; >> import ch.qos.logback.classic.____**LoggerContext; >> >> >> >> public class MyServletContextListener implements >> >> ServletContextListener { >> >> public void contextInitialized(____**ServletContextEvent >> sce) { >> } >> >> public void contextDestroyed(____**ServletContextEvent >> sce) { >> LoggerContext lc = >> (LoggerContext) >> LoggerFactory.____**getILoggerFactory(); >> >> >> lc.stop(); >> } >> >> Please let us know if stopping logback as described above >> helps. >> >> >> On 16.04.2013 15:06, Roxolid wrote: >> >> Hi all, >> >> I have a trouble with logback configuration under >> WebLogic 12c. My >> application is using RollingFile Appender with >> TimeBasedRollingPolicy >> and the problem is it stops logging every time I stop >> and then >> start the >> application through WebLogic Console. However, the >> logging is >> back when >> a rollover occurs - in the new file logging continues... >> >> Has anyone faced such behavior (and knows the solution)? >> >> Thank you in advance. >> >> Regards, >> >> rox >> >> >> >> > -- > Ceki > 65% of statistics are made up on the spot > ______________________________**_________________ > Logback-user mailing list > [email protected] > http://mailman.qos.ch/mailman/**listinfo/logback-user<http://mailman.qos.ch/mailman/listinfo/logback-user> >
_______________________________________________ Logback-user mailing list [email protected] http://mailman.qos.ch/mailman/listinfo/logback-user
