Logback, ett ramverk för loggning på Java-plattformen, släpptes nyligen som version 1.0. Initiativtagare är personen bakom log4j och SLF4J, Ceki Gülcü. Logback bygger på log4j och kan därför ses som en direkt uppföljare. Logback kommer med inbyggt stöd för SLF4J för att underlätta byte av implementation av ramverk. Några av fördelarna över log4j som sägs vara högre prestanda, utökad testsvit för bättre tillförlitlighet, förbättrad automatisk omladdning av konfigurationsfiler, mer avancerade filter och integration med servlet-containers för loggning av http-access.

För att testa Logback, lägg till följande maven-beroende:

<dependency>
  <groupId>ch.qos.logback</groupId>
  <artifactId>logback-classic</artifactId>
  <version>1.0.0</version>
</dependency>

Logback-classic beror på logback-core och SLF4J och därför kommer dessa automatiskt inkluderas i projektet. Därefter är det bara att logga på samma sätt som med SLF4J:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
...
Logger logger = LoggerFactory.getLogger(App.class);
logger.info("Hello World!");

Konfiguration påminner om log4j men skiljer sig på vissa punkter. Nedan är ett enkelt exempel på en Logback-konfiguration:

<?xml version="1.0" encoding="UTF-8" ?>
<configuration scan="true" scanPeriod="3 seconds">
 
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{32} - %msg%n</pattern>
        </encoder>
    </appender>
 
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>logFile.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>logFile.%d{yyyy-MM-dd_HH-mm}.log.zip</fileNamePattern>
            <maxHistory>5</maxHistory>
        </rollingPolicy>
 
        <encoder>
            <pattern>%-26(%d{HH:mm:ss,SSS} [%thread]) %-5level %logger{32} - %msg%n</pattern>
        </encoder>
    </appender>
 
    <root level="DEBUG">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE" />
    </root>
 
</configuration>