Files
asv-format-validator/docs/arbeitspakete/m1/AP04-logging-adapter.md

3.2 KiB
Raw Blame History

AP04 Logging-Adapter (SLF4J-Fassade + Log4j2-Bindung)

Ziel

Sicherstellen, dass im gesamten Quellcode nur noch SLF4J-Typen importiert werden (org.slf4j.Logger, org.slf4j.LoggerFactory), außer in einem dedizierten Logging-Adapter und im Bootstrap. Die konkrete Log4j2-Bindung darf nur an diesen zwei Stellen sichtbar sein, wie von technik-und-architektur.md gefordert.

Voraussetzungen

  • AP03 (Paketstruktur vorhanden)

Scope IN

  • Alle Stellen im Produktivcode, die org.apache.logging.log4j.LogManager oder org.apache.logging.log4j.Logger importieren, werden umgestellt auf:
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    private static final Logger logger = LoggerFactory.getLogger(MyClass.class);
    
  • Anlage einer minimalen log4j2.xml in src/main/resources/:
    • Console-Appender (StdErr)
    • File-Appender mit Zielpfad, der später (AP07) durch den Bootstrap überschrieben wird; für M1 genügt ein Default-Pfad logs/asv-format-validator.log
    • Log-Level INFO für de.gecheckt.asv, WARN für alles andere
    • Deutsche Log-Texte bleiben auf Deutsch
  • Anlage eines LoggingConfigurator oder ähnlich im Paket adapter.out.logging, der Log4j2 programmatisch konfigurieren kann (Zielpfad der Log-Datei setzbar). Für M1 reicht eine Klasse mit einer Methode void configureLogFile(Path logFile), die noch keine tiefe Magie macht, aber das Interface definiert.
  • Architekturcheck: per grep sicherstellen, dass außerhalb von adapter.out.logging und bootstrap keine org.apache.logging.log4j.*-Imports mehr existieren.

Scope OUT

  • tatsächliche dynamische Log-Datei-Umleitung pro Lauf (das ist AP07)
  • Log-Rotation, Log-Compression, eigene Appender-Klassen
  • Logging-Policies, Log-Level pro Klasse
  • Umbau der Log-Nachrichten selbst (Wortlaut, Formatierung)

Schritte

  1. Branch m1/ap04-logging-adapter
  2. In allen Produktiv-Klassen außer adapter.out.logging und bootstrap: Log4j2-Imports durch SLF4J-Imports ersetzen
  3. Minimale log4j2.xml in src/main/resources/ anlegen
  4. LoggingConfigurator in adapter.out.logging anlegen (Skelett)
  5. mvn clean verify laufen lassen, muss grün sein
  6. grep -rn "org.apache.logging.log4j" src/main/java/ | grep -v "adapter/out/logging\|bootstrap" muss leer sein
  7. Commit M1-AP04: Logging-Adapter, SLF4J-Fassade etabliert
  8. Abschlussbericht schreiben

Abnahmekriterien

  • kein Import von org.apache.logging.log4j.* außerhalb von adapter.out.logging und bootstrap (Grep-Nachweis im Bericht)
  • log4j2.xml in src/main/resources/ vorhanden
  • LoggingConfigurator-Klasse in adapter.out.logging vorhanden (mindestens Skelett)
  • mvn clean verify ist grün
  • alle bestehenden Tests laufen weiterhin (SLF4J ist API-kompatibel; falls Tests wegen Logger-Mocks brechen, müssen sie angepasst werden — dann im Bericht dokumentieren)
  • Abschlussbericht liegt vor

Rest-Risiken und offene Punkte

  • Falls bestehende Tests Log4j2-Logger mocken: Anpassung nötig. Im Zweifel Logger-Mocks entfernen, Logging ist keine Testlogik.
  • log4j2.xml hat in M1 einen statischen Dateipfad. Der dynamische Pfad pro Lauf kommt erst in AP07.

Bericht

docs/arbeitspakete/m1/berichte/AP04-bericht.md nach templates/ap-bericht.md.