LogbackとSLF4Jでログをローリングしつつ圧縮するサンプル
LogbackとSLF4Jを使用してログをローリングして出力されたファイルを圧縮する
サンプルです。
サンプルは分単位でローリングしてローリングされたファイルをZIPで圧縮します。
材料はこちら、
http://logback.qos.ch/
http://www.slf4j.org/
下記のライブラリを使用
logback-access-0.9.15.jar
logback-classic-0.9.15.jar
logback-core-0.9.15.jar
slf4j-api-1.5.8.jar
<?xml version="1.0" encoding="UTF-8" ?> <configuration> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <layout class="ch.qos.logback.classic.PatternLayout"> <pattern>%d{yyyy/MM/dd HH:mm:ss.SSS} %-5level %class{0} %line : %msg%n</pattern> </layout> </appender> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>INFO</level> </filter> <layout class="ch.qos.logback.classic.PatternLayout"> <pattern>%d{yyyy/MM/dd HH:mm:ss.SSS} %-5level %class{0} %line : %msg%n</pattern> </layout> <File>sample.log</File> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <FileNamePattern>sample.%d{yyyy-MM-dd-HH-mm}.zip</FileNamePattern> </rollingPolicy> </appender> <root level="debug"> <appender-ref ref="STDOUT" /> <appender-ref ref="FILE" /> </root> </configuration>
LogWriteExample.java
public class LogWriteExample { final static Logger logger = LoggerFactory.getLogger(LogWriteExample.class); /** * * 実行。 * @throws Exception */ public void execute() throws Exception { for (int i = 0 ; i < 10000; i++) { logger.debug("DEBUG_TEST"); logger.info("INFO TEST"); logger.debug("テスト:{},{},{}", new String[]{"TEST", "TEST2", "TEST3"}); } } }
実行すると、分単位でログが圧縮されて出力されます。