Logging in Java-Anwendungen: Best Practices für Anfänger

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einführung in das Java-Logging

\n

Logging ist der Prozess der Aufzeichnung von Informationen über die Arbeit einer Anwendung. Für angehende Java-Entwickler erscheint dies oft als zweitrangige Aufgabe, aber in der Praxis spart gut konfiguriertes Logging Stunden beim Debuggen und hilft, Fehler in der Produktion schnell zu finden. In diesem Artikel werden wir die besten Praktiken für das Logging in Java behandeln, beliebte Bibliotheken betrachten und funktionierende Beispiele schreiben.

\n

Schlechtes Logging ist, wenn Sie System.out.println("Hier ist ein Fehler") schreiben. Gutes Logging sind strukturierte Einträge mit Wichtigkeitsgrad, Zeitstempel und Kontext. Lassen Sie uns lernen, es richtig zu machen.

\n\n

Wichtige Bibliotheken für das Logging

\n

In Java gibt es mehrere Standard- und Drittanbieter-Lösungen. Betrachten wir die drei beliebtesten Optionen.

\n\n

Java Util Logging (JUL)

\n

Eine integrierte Bibliothek, die im Lieferumfang des JDK enthalten ist. Nachteil: eingeschränkte Flexibilität. Beispiel zur Verwendung:

\n
import java.util.logging.Logger;\nimport java.util.logging.Level;\n\npublic class JULExample {\n    private static final Logger logger = Logger.getLogger(JULExample.class.getName());\n\n    public static void main(String[] args) {\n        logger.info("Anwendung gestartet");\n        logger.warning("Dies ist eine Warnung");\n        logger.severe("Kritischer Fehler");\n    }\n}
\n\n

Log4j 2

\n

Eine der leistungsstärksten und beliebtesten Bibliotheken. Unterstützt asynchrones Logging, Filter und flexible Konfiguration. Beispiel für die Konfiguration über XML:

\n
<?xml version="1.0" encoding="UTF-8"?>\n<Configuration>\n    <Appenders>\n        <Console name="Console" target="SYSTEM_OUT">\n            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>\n        </Console>\n    </Appenders>\n    <Loggers>\n        <Root level="info">\n            <AppenderRef ref="Console"/>\n        </Root>\n    </Loggers>\n</Configuration>
\n\n

SLF4J + Logback

\n

SLF4J ist eine Fassade (Abstraktion) für verschiedene Logging-Systeme. Logback ist seine native Implementierung. Dies ist der moderne De-facto-Standard. Beispiel:

\n
import org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\n\npublic class SLF4JExample {\n    private static final Logger logger = LoggerFactory.getLogger(SLF4JExample.class);\n\n    public static void main(String[] args) {\n        logger.info("Benutzer {} hat sich angemeldet", "admin");\n        try {\n            int result = 10 / 0;\n        } catch (ArithmeticException e) {\n            logger.error("Fehler bei Division durch Null", e);\n        }\n    }\n}
\n\n

Best Practices für das Logging für Anfänger

\n

Die Befolgung dieser Regeln macht Ihr Logging professionell und nützlich.

\n\n

1. Verwenden Sie die richtigen Logging-Level

\n

In Java sind die folgenden Level üblich (vom wichtigsten zum unwichtigsten):

\n
    \n
  • ERROR — Kritische Fehler, die sofortiges Eingreifen erfordern (z. B. Verbindungsverlust zur Datenbank).
  • \n
  • WARN — Warnungen vor potenziellen Problemen (z. B. Verwendung einer veralteten API).
  • \n
  • INFO — Wichtige Ereignisse im Anwendungsbetrieb (Start, Stopp, erfolgreiche Verarbeitung einer Anfrage).
  • \n
  • DEBUG — Detaillierte Informationen für den Entwickler (Variablenwerte, Algorithmusschritte).
  • \n
  • TRACE — Maximal detaillierte Ablaufverfolgung (normalerweise nur zur Suche nach bestimmten Fehlern aktiviert).
  • \n
\n

Verwenden Sie niemals System.out.println zum Logging – Sie verlieren die Kontrolle über Level und Format.

\n\n

2. Fügen Sie immer Kontextinformationen hinzu

\n

Ein Logeintrag sollte die Fragen beantworten: Was ist passiert, wann, wo und mit welchen Daten. Verwenden Sie parametrisierte Nachrichten:

\n
logger.info("Bestellung {} für Benutzer                

Blogs

Buchempfehlungen