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¶
- 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).
Brauchen Sie Hilfe bei der Implementierung?
Unsere Experten helfen Ihnen bei Design, Implementierung und Betrieb. Von der Architektur bis zur Produktion.
Kontaktieren Sie uns