# DebugUtils

Kurzbeschreibung

DebugUtils kapselt java.util.logging.Logger und fügt standardisierte Prefixes für Logs hinzu.

Beispiel:

DebugUtils.debug(Level.INFO, "Init", "Component loaded");
DebugUtils.debug(Level.SEVERE, "DB", "Fehler beim Verbinden", exception);

Methoden sind sehr direkt und statisch verfügbar.


# Quick Reference

Signaturen:

  • debug(Level level, String prefix, String message, Throwable throwable)
  • debug(Level level, String prefix, String message)
  • debug(Level level, String message, Throwable throwable)
  • debug(Level level, String message)

Praktische Beispiele:

// Mit Prefix und Exception
DebugUtils.debug(Level.SEVERE, "DB", "Fehler beim Speichern", sqlException);

// Nur Prefix
DebugUtils.debug(Level.INFO, "Engine", "Component initialized");

// Message + Throwable, ohne Prefix
DebugUtils.debug(Level.WARNING, "Optional fallback behaviour used", ex);

// Kurzer Einzeiler
DebugUtils.debug(Level.FINE, "Cache hit for key: user:1234");

# Alle Overloads und Praxisbeispiele

Die Klasse bietet vier Overloads — hier die Signaturen und praktische Beispiele sowie Hinweise zur Verwendung.

  • debug(Level level, String prefix, String message, Throwable throwable)
DebugUtils.debug(Level.SEVERE, "DB", "Fehler beim Speichern", sqlException);

Verwendung: nutze diese Variante, wenn du ein Throwable mitschicken willst (Stacktrace wird geloggt).

  • debug(Level level, String prefix, String message)
DebugUtils.debug(Level.INFO, "Engine", "Component initialized");

Verwendung: häufigster Fall — strukturiertes loggen mit Kontext-Prefix.

  • debug(Level level, String message, Throwable throwable)
DebugUtils.debug(Level.WARNING, "Optional fallback behaviour used", ex);

Verwendung: wenn kein zusätzlicher Kontext-String nötig ist.

  • debug(Level level, String message)
DebugUtils.debug(Level.FINE, "Cache hit for key: user:1234");

Verwendung: kurzer Einzeiler-Log; für sehr häufige Logs (z. B. TRACE/FINE) vorsichtig sein — viele Logs können I/O/Performance verursachen.


# Empfehlungen / Best Practices

  • Verwende konsistente Prefixes (z. B. DB, Engine, Worker) um Log-Ausgaben durchsuchbar zu machen.
  • Nutze Level.SEVERE für Fehler, Level.WARNING für potenzielle Probleme, Level.INFO für wichtige Lifecycle-Ereignisse und Level.FINE für sehr detaillierte Debug-Informationen.
  • Wenn du strukturierte Logs brauchst (z. B. JSON für externes Logging), ersetze DebugUtils durch eine Bibliothek wie SLF4J+Logback oder Log4j2 mit JSON-Layout.