Zum Inhalt springen
_CORE
KI & Agentensysteme Unternehmensinformationssysteme Cloud & Platform Engineering Datenplattform & Integration Sicherheit & Compliance QA, Testing & Observability IoT, Automatisierung & Robotik Mobile & Digitale Produkte Banken & Finanzen Versicherungen Öffentliche Verwaltung Verteidigung & Sicherheit Gesundheitswesen Energie & Versorgung Telko & Medien Industrie & Fertigung Logistik & E-Commerce Retail & Treueprogramme
Referenzen Technologien Blog Know-how Tools
Über uns Zusammenarbeit Karriere
CS EN DE
Lassen Sie uns sprechen

Logging in Java-Anwendungen — Best Practices

25. 06. 2013 1 Min. Lesezeit CORE SYSTEMSdevelopment
Logging in Java-Anwendungen — Best Practices

Korrekt konfiguriertes Logging ist der Unterschied zwischen einer Stunde Debugging und einer Fünf-Minuten-Diagnose. Schlechtes Logging ist entweder zu viel (Tausende Zeilen pro Sekunde, die niemand liest) oder zu wenig (ERROR — sonst nichts).

SLF4J als Fassade

SLF4J (Simple Logging Facade for Java) entkoppelt Ihren Code von der konkreten Logging-Implementierung. In der Produktion verwenden Sie Log4j, in Tests Logback — der Code ändert sich nicht. Loggen Sie immer über SLF4J, niemals direkt über die Log4j-API.

Log-Level — die Regeln

ERROR: etwas ist fehlgeschlagen und erfordert Eingreifen (Datenbank nicht erreichbar, externer Dienst antwortet nicht). WARN: etwas ist verdächtig, aber die Anwendung läuft weiter (veraltete API, Limit wird erreicht). INFO: bedeutende Business-Ereignisse (Benutzer angemeldet, Bestellung erstellt). DEBUG: Details für Entwickler (SQL-Abfragen, HTTP-Header). In der Produktion: INFO und höher; in der Entwicklung: DEBUG.

MDC — Mapped Diagnostic Context

Jede Log-Zeile sollte enthalten: Zeitstempel, Thread, Level, Logger, Nachricht — und auch Benutzername, Session-ID, Request-ID. MDC löst das: Zu Beginn eines Requests wird die userId in den MDC eingefügt, und jede Log-Zeile enthält sie automatisch. Unschätzbar bei der Diagnose von Problemen eines bestimmten Benutzers.

Rotation und Aufbewahrung

DailyRollingFileAppender: neue Datei jeden Tag. 30 Tage Aufbewahrung. Maximale Größe von 100 MB pro Datei (RollingFileAppender). Komprimierung alter Logs (gzip). In der Produktion NIEMALS nach stdout loggen — verwenden Sie FileAppender.

Zentrale Erfassung

Bei 20 Servern ist das Lesen von Logs auf jedem Server einzeln unpraktisch. Rsyslog/syslog-ng für die zentrale Erfassung auf einem Log-Server. Wir suchen eine Lösung für die Volltextsuche in Logs — derzeit grep, aber das skaliert nicht.

Regeln

  1. SLF4J-Fassade. 2. Korrekte Log-Level. 3. MDC für Kontext. 4. Rotation und Aufbewahrung. 5. Loggen Sie was, nicht wie (das Ergebnis einer Operation, nicht jede Codezeile).
log4jslf4jloggingjava
Teilen:

CORE SYSTEMS

Wir bauen Kernsysteme und KI-Agenten, die den Betrieb am Laufen halten. 15 Jahre Erfahrung mit Enterprise-IT.

Brauchen Sie Hilfe bei der Implementierung?

Unsere Experten helfen Ihnen bei Design, Implementierung und Betrieb. Von der Architektur bis zur Produktion.

Kontaktieren Sie uns