0Pricing
Java Academy · Lektion

Logback konfigurieren

Appender, Patterns und Ebenen

Logback konfigurieren ist eine kostenlose Java Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Java Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Java Academy-Kurs umfasst insgesamt 4 Lektionen.

Was ist Logback?

Logback ist ein beliebtes SLF4J-Backend, das vom selben Autor wie Log4j geschrieben wurde. Es führt das Logging aus, das durch die Aufrufe von SLF4J beschrieben wird.

Sie konfigurieren es mit einer Datei namens logback.xml im Klassenpfad, üblicherweise unter src/main/resources.

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Main {
    private static final Logger log = LoggerFactory.getLogger(Main.class);
    public static void main(String[] args) {
        log.info("Logback reads logback.xml at startup");
    }
}

Drei Grundbausteine

Die Logback-Konfiguration beruht auf drei Kernkonzepten:

  • Logger: benannte Quelle von Log-Ereignissen mit einem Level.
  • Appender: ein Ziel (Konsole, Datei).
  • Encoder/Layout: formatiert das Ereignis als Text.
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Main {
    private static final Logger log = LoggerFactory.getLogger(Main.class);
    public static void main(String[] args) {
        log.info("logger -> appender -> encoder -> output");
    }
}

Ein Konsolen-Appender

Die einfachste Konfiguration leitet alles an die Konsole weiter. Das Pattern des Encoders bestimmt das Format der Zeile.

Dieses XML befindet sich in logback.xml, nicht in Ihrem Java-Code.

<configuration>
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%d{HH:mm:ss.SSS} %-5level %logger{36} - %msg%n</pattern>
    </encoder>
  </appender>
  <root level="info">
    <appender-ref ref="STDOUT" />
  </root>
</configuration>

Das Pattern verstehen

Konvertierungsbegriffe in Patterns beginnen mit %:

  • %d ist der Zeitstempel, %level das Level.
  • %logger ist der Logger-Name, %thread der Thread.
  • %msg ist Ihre Nachricht, %n ein Zeilenumbruch.

%-5level füllt das Level links bis zu einer Breite von 5 auf.

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Main {
    private static final Logger log = LoggerFactory.getLogger(Main.class);
    public static void main(String[] args) {
        // Output rendered by pattern: time LEVEL logger - message
        log.info("hello");
    }
}

Der Root-Logger und Level

Das Element <root> legt das Standard-Level für die gesamte Anwendung und die Appender fest, in die geschrieben wird.

Wenn Sie level="info" festlegen, werden INFO, WARN und ERROR ausgegeben; DEBUG und TRACE werden unterdrückt.

<configuration>
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder><pattern>%-5level %logger - %msg%n</pattern></encoder>
  </appender>
  <root level="warn">
    <appender-ref ref="STDOUT" />
  </root>
</configuration>

Level pro Paket

Fügen Sie ein <logger>-Element hinzu, um das Level für ein Paket zu überschreiben. So können Sie DEBUG für Ihren eigenen Code aktivieren und Bibliotheken ruhig halten.

<configuration>
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder><pattern>%-5level %logger - %msg%n</pattern></encoder>
  </appender>
  <logger name="com.example.app" level="debug" />
  <root level="info">
    <appender-ref ref="STDOUT" />
  </root>
</configuration>

Ein rotierender Datei-Appender

In der Produktion schreiben Sie üblicherweise in Dateien, die täglich oder nach Größe rotiert werden, damit Logs nicht unbegrenzt wachsen.

RollingFileAppender mit einer zeitbasierten Richtlinie erstellt eine Datei pro Tag und bewahrt einen begrenzten Verlauf auf.

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
  <file>logs/app.log</file>
  <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    <fileNamePattern>logs/app.%d{yyyy-MM-dd}.log</fileNamePattern>
    <maxHistory>30</maxHistory>
  </rollingPolicy>
  <encoder>
    <pattern>%d %-5level [%thread] %logger{36} - %msg%n</pattern>
  </encoder>
</appender>

Mehrere Appender gleichzeitig

Der Root-Logger kann auf mehrere Appender verweisen, sodass Logs gleichzeitig an die Konsole und in eine Datei gesendet werden.

<configuration>
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder><pattern>%-5level %msg%n</pattern></encoder>
  </appender>
  <appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>logs/app.log</file>
    <encoder><pattern>%d %-5level %msg%n</pattern></encoder>
  </appender>
  <root level="info">
    <appender-ref ref="STDOUT" />
    <appender-ref ref="FILE" />
  </root>
</configuration>

MDC ausgeben

Um MDC-Kontext wie eine Request-ID in jede Zeile aufzunehmen, fügen Sie %X{key} zum Pattern hinzu.

Jeder Wert, den Sie im MDC ablegen, erscheint dann automatisch.

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.MDC;

public class Main {
    private static final Logger log = LoggerFactory.getLogger(Main.class);
    public static void main(String[] args) {
        MDC.put("requestId", "req-1234");
        // Pattern: %X{requestId} %-5level %msg%n
        log.info("handled");
        MDC.clear();
    }
}

Additivität

Standardmäßig werden die Ereignisse eines Loggers auch an die Appender seiner übergeordneten Logger weitergeleitet. Das wird als Additivität bezeichnet.

Wenn ein Paket-Logger einen eigenen Appender besitzt und Sie doppelte Ausgaben vermeiden möchten, setzen Sie bei ihm additivity="false".

<configuration>
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder><pattern>%-5level %logger - %msg%n</pattern></encoder>
  </appender>
  <logger name="com.example.audit" level="info" additivity="false">
    <appender-ref ref="STDOUT" />
  </logger>
  <root level="warn">
    <appender-ref ref="STDOUT" />
  </root>
</configuration>

Automatisches Neuladen und Variablen

Logback kann die Konfiguration mit <configuration scan="true"> regelmäßig neu laden. Das ist nützlich, um Level ohne Neustart zu ändern.

Sie können auch Eigenschaften wie ein Log-Verzeichnis mit Platzhaltern wie ${LOG_DIR} auslesen.

<configuration scan="true" scanPeriod="30 seconds">
  <property name="LOG_DIR" value="logs" />
  <appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>${LOG_DIR}/app.log</file>
    <encoder><pattern>%d %-5level %msg%n</pattern></encoder>
  </appender>
  <root level="info"><appender-ref ref="FILE" /></root>
</configuration>

Kurzer Test

Testen Sie Ihr Wissen über die Logback-Konfiguration.

Zusammenfassung

Sie haben gelernt, Logback zu konfigurieren:

  • Die Konfiguration befindet sich in logback.xml und enthält Logger, Appender und Encoder.
  • Patterns formatieren Zeilen mit %d, %level, %msg und %X{}.
  • RollingFileAppender rotiert Logs; legen Sie Level pro Paket fest und konfigurieren Sie die Additivität.
  • Aktivieren Sie scan für die Live-Neukonfiguration.

Sie haben den Logging-Kurs abgeschlossen.

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Main {
    private static final Logger log = LoggerFactory.getLogger(Main.class);
    public static void main(String[] args) {
        log.info("Logback configuration course complete");
    }
}

Häufig gestellte Fragen

Ist die Lektion „Logback konfigurieren“ kostenlos?

Ja — der vollständige Text von „Logback konfigurieren“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Java Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Java Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Logback konfigurieren“?

Appender, Patterns und Ebenen Du übst Java Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Java Academy zu starten?

Keine Vorkenntnisse erforderlich. Java Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „Logback konfigurieren“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Java Academy-Lektion Code schreiben und ausführen?

Ja. Jede Java Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Warum strukturiertes Logging
  2. SLF4J-Fassade und Logger
  3. Parametrisiertes Logging
  4. Logback konfigurieren
← Zurück zu Java Academy