[logback-user] Jetty: How to get multiple web applications log to a common log file

Gaurav Kumar gaurav419 at gmail.com
Tue Oct 30 19:09:24 CET 2012


Hi,

[Please ignore the previous email with the same subject line. That was
accidentally posted.]


I am using Jetty webserver and logback for logging.


I have a scenario with multiple Web Applications (so multiple wars into
jetty/webapps dir). Each war has its own copy of logback-classic,
logback-core and slf4j-api. There is a common copy of logback.xml in
jetty/resources (pasted below). My intent is to maintain a logfile named
"testapp.<date>.log" which should be used by all the wars for logging.
Further, I want a rollover of this file on every startup. I am able to
achieve this except that each war is trying to create its own version of
the log file so when each war is loaded it creates its own logfile
archiving the earlier logfile created by the earlier war. This continues
till all wars are loaded thus creating these many log files per startup.
The archived files are are named "testapp.<date>.log.<time in millisec>.

Is there a way to ask all wars to log into the same file?


*logback.xml file content:*

*<configuration>
  <timestamp key="dateStr" datePattern="yyyy-MM-dd"
timeReference="contextBirth"/>-->
  <timestamp key="timeStr" datePattern="HHmmssSSS"
timeReference="contextBirth"/>-->

  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
       <pattern>%date{MMM dd}, %date{yyyy hh:mm:ss a} %class
%method\(\):%line %n%level: %message%n </pattern>
    </encoder>
  </appender>

  <appender name="FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${jetty.home}/logs/testapp.${dateStr}.log</file>

    <rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <!-- daily rollover -->

<fileNamePattern>${jetty.home}/logs/testapp.%d{yyyy-MM-dd}.log.${timeStr}</fileNamePattern>

      <!-- keep max 30 rolled over files -->
      <maxHistory>30</maxHistory>
      <cleanHistoryOnStart>true</cleanHistoryOnStart>

      <!-- trigger for daily rollover and every server restart -->
      <timeBasedFileNamingAndTriggeringPolicy class="utils.
LogbackLogTriggeringPolicy"/>
    </rollingPolicy>

    <encoder>
        <pattern>%date{MMM dd}, %date{yyyy hh:mm:ss a} %class
%method\(\):%line %n%level: %message%n </pattern>
    </encoder>
  </appender>

  <root level="INFO">
    <appender-ref ref="FILE" />
  </root>
</configuration>*


*LogbackLogTriggeringPolicy.java is:*

*@NoAutoStart
public class LogbackLogTriggeringPolicy<E> extends
DefaultTimeBasedFileNamingAndTriggeringPolicy<E> {
  @Override
      public void start() {
          super.start();
          nextCheck = 0L;
          isTriggeringEvent(null, null);
          try {
              tbrp.rollover();
          } catch (RolloverFailure e) {
              //Do nothing
          }
      }
}
*

Thanks.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.qos.ch/pipermail/logback-user/attachments/20121030/abf50c57/attachment.html>


More information about the Logback-user mailing list