Skip to content

Instantly share code, notes, and snippets.

@diroussel
Created April 11, 2013 14:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save diroussel/5363736 to your computer and use it in GitHub Desktop.
Save diroussel/5363736 to your computer and use it in GitHub Desktop.
When using SiftingAppender and RollingFileAppender files do not get rolled on close.
<configuration>
<logger name="com.client.gcm" level="${log.level}" />
<logger name="com.client.system" level="${log.level}" />
<logger name="org.apache.commons.dbcp.DriverConnectionFactory" level="${log.level}" />
<logger name="httpclient" level="WARN" />
<logger name="org.apache" level="WARN" />
<logger name="org.apache.commons.httpclient" level="WARN" />
<logger name="org.apache.camel" level="${log.level}" />
<logger name="org.apache.activemq.transport" level="WARN" />
<logger name="org.hibernate" level="WARN" />
<logger name="org.hibernate.cfg.AnnotationBinder" level="WARN" />
<logger name="org.hibernate.cfg.annotations" level="WARN" />
<logger name="org.quartz" level="WARN" />
<logger name="org.springframework" level="WARN" />
<logger name="org.springframework.jdbc.core.JdbcTemplate" level="${log.level}"/>
<logger name="org.datasynapse" level="WARN" />
<!-- if we are given a file name, then log to file, else log to stdout -->
<if condition='!property("messagepricer.log.dir").isEmpty()'>
<then>
<appender name="WITHOUT_LOGFILKEY" class="ch.qos.logback.classic.sift.SiftingAppender">
<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
<evaluator> <!-- defaults to type ch.qos.logback.classic.boolex.JaninoEventEvaluator -->
<expression>return mdc.containsKey("logfileKey");</expression>
</evaluator>
<OnMismatch>NEUTRAL</OnMismatch>
<OnMatch>DENY</OnMatch>
</filter>
<!-- in the absence of the class attribute, it is assumed that the desired
discriminator type is ch.qos.logback.classic.sift.MDCBasedDiscriminator -->
<discriminator>
<key>logfileType</key>
<defaultValue>main</defaultValue>
</discriminator>
<sift>
<appender name="ROLLING-${logfileType}" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${messagepricer.log.dir}/messagepricer.${logfileType}.${HOSTNAME}.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${messagepricer.log.dir}/archive-main/messagepricer.${logfileType}.${HOSTNAME}.%d{yyyy-MM-dd}.log.gz</fileNamePattern>
<maxHistory>${messagepricer.log.maxHistory}</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-16thread] %-5level %-35.35logger{30} - %msg%n</pattern>
</encoder>
</appender>
</sift>
</appender>
<appender name="WITH_LOGFILKEY" class="ch.qos.logback.classic.sift.SiftingAppender">
<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
<evaluator> <!-- defaults to type ch.qos.logback.classic.boolex.JaninoEventEvaluator -->
<expression>return !mdc.containsKey("logfileKey");</expression>
</evaluator>
<OnMismatch>NEUTRAL</OnMismatch>
<OnMatch>DENY</OnMatch>
</filter>
<!-- in the absence of the class attribute, it is assumed that the desired
discriminator type is ch.qos.logback.classic.sift.MDCBasedDiscriminator -->
<discriminator>
<key>logfileKey</key>
<defaultValue>messagepricer.%d{yyyy-MM-dd-HH-mm}.${HOSTNAME}</defaultValue>
</discriminator>
<sift>
<appender name="ROLLING-${logfileKey}" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${messagepricer.log.dir}/${logfileKey}.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${messagepricer.log.dir}/archive-msg/messagepricer.${logfileKey}.${HOSTNAME}.%d{yyyy-MM-dd-HH-mm}.log.gz</fileNamePattern>
<maxHistory>${messagepricer.log.maxHistory}</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-16thread] %-5level %-35.35logger{30} - %msg%n</pattern>
</encoder>
</appender>
</sift>
</appender>
<appender name="ASYNC-ROLLING" class="ch.qos.logback.classic.AsyncAppender">
<appender-ref ref="WITHOUT_LOGFILKEY" />
</appender>
<appender name="ASYNC-FILE" class="ch.qos.logback.classic.AsyncAppender">
<appender-ref ref="WITH_LOGFILKEY" />
</appender>
<root level="${log.level}">
<appender-ref ref="ASYNC-ROLLING" />
<appender-ref ref="ASYNC-FILE" />
</root>
</then>
<else>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-16thread] %-5level %-35.35logger{30} - %msg%n</pattern>
</encoder>
</appender>
<root level="${log.level}">
<appender-ref ref="STDOUT" />
</root>
</else>
</if>
</configuration>
@lancejohann
Copy link

Were you able to find out why it wasn't working?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment