File compression format can be specified via fileNamePattern property.
Example
rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
fileNamePattern>${LOG_FILES_HOME}/app-%d{yyyy-MM-dd}.%i.log.gzfileNamePattern>
maxFileSize>1MBmaxFileSize>
maxHistory>30maxHistory>
totalSizeCap>20GBtotalSizeCap>
rollingPolicy>
Find the below working application.
Step 1: Create new maven project ‘logback-zip-log-files’.
Step 2: Update pom.xml with maven dependencies,
pom.xml
project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
modelVersion>4.0.0modelVersion>
groupId>com.sample.appgroupId>
artifactId>logback-zip-log-filesartifactId>
version>1version>
properties>
maven.compiler.source>1.8maven.compiler.source>
maven.compiler.target>1.8maven.compiler.target>
properties>
dependencies>
dependency>
groupId>ch.qos.logbackgroupId>
artifactId>logback-classicartifactId>
version>1.2.10version>
dependency>
dependency>
groupId>ch.qos.logbackgroupId>
artifactId>logback-coreartifactId>
version>1.2.10version>
dependency>
dependency>
groupId>org.slf4jgroupId>
artifactId>slf4j-apiartifactId>
version>1.7.36version>
dependency>
dependencies>
project>
Step 3: Create logback.xml file under src/main/resources folder.
logback.xml
xml version="1.0" encoding="UTF-8"?>
configuration scan="true">
property name="LOG_FILES_HOME" value="/Users/Shared/logback" />
appender name="consoleAppender"
class="ch.qos.logback.core.ConsoleAppender">
encoder>
charset>UTF-8charset>
Pattern>%d %-4relative [%thread] %-5level %logger{35} - %msg%n
Pattern>
encoder>
appender>
appender name="FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
file>${LOG_FILES_HOME}/app.logfile>
rollingPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
fileNamePattern>${LOG_FILES_HOME}/app-%d{yyyy-MM-dd}.%i.log.gz
fileNamePattern>
maxFileSize>1MBmaxFileSize>
maxHistory>30maxHistory>
totalSizeCap>20GBtotalSizeCap>
rollingPolicy>
encoder>
charset>UTF-8charset>
pattern>%d %-4relative [%thread] %-5level %logger{35} - %msg%n
pattern>
encoder>
appender>
root level="DEBUG">
appender-ref ref="consoleAppender" />
appender-ref ref="FILE" />
root>
configuration>
Step 4: Define HelloWorld class.
HelloWorld.java
package com.sample.app;
import java.util.concurrent.TimeUnit;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class HelloWorld {
private static Logger logger = LoggerFactory.getLogger(HelloWorld.class);
private static void sleep(int noOfSeconds) {
try {
TimeUnit.SECONDS.sleep(noOfSeconds);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
while (true) {
for (int i = 0; i 10000; i++) {
logger.trace("Trace message");
logger.debug("Debug message");
logger.info("Info message");
logger.warn("Warning message");
logger.error("Error message");
}
sleep(1);
}
}
}
Total project structure looks like below.
Run HelloWorld.java application.
You can observe that log files are compressed to .gz format in /Users/Shared/logback folder.
$ls -lart
total 2456
drwxrwxrwt 15 root wheel 480 Feb 25 15:39 ..
-rw-r--r-- 1 krishna wheel 9193 Feb 25 15:45 app-2022-02-25.0.log.gz
-rw-r--r-- 1 krishna wheel 8201 Feb 25 15:45 app-2022-02-25.1.log.gz
-rw-r--r-- 1 krishna wheel 8058 Feb 25 15:45 app-2022-02-25.2.log.gz
drwxr-xr-x 7 krishna wheel 224 Feb 25 15:45 .
-rw-r--r-- 1 krishna wheel 1215810 Feb 25 15:45 app.log
You can download the complete working application from below link.
https://github.com/harikrishna553/java-libs/tree/master/logback/logback-zip-log-files
This post first appeared on Java Tutorial : Blog To Learn Java Programming, please read the originial post: here