3.2 KiB
3.2 KiB
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.LogManageroderorg.apache.logging.log4j.Loggerimportieren, werden umgestellt auf:import org.slf4j.Logger; import org.slf4j.LoggerFactory; private static final Logger logger = LoggerFactory.getLogger(MyClass.class); - Anlage einer minimalen
log4j2.xmlinsrc/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
INFOfürde.gecheckt.asv,WARNfür alles andere - Deutsche Log-Texte bleiben auf Deutsch
- Anlage eines
LoggingConfiguratoroder ähnlich im Paketadapter.out.logging, der Log4j2 programmatisch konfigurieren kann (Zielpfad der Log-Datei setzbar). Für M1 reicht eine Klasse mit einer Methodevoid configureLogFile(Path logFile), die noch keine tiefe Magie macht, aber das Interface definiert. - Architekturcheck: per
grepsicherstellen, dass außerhalb vonadapter.out.loggingundbootstrapkeineorg.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
- Branch
m1/ap04-logging-adapter - In allen Produktiv-Klassen außer
adapter.out.loggingundbootstrap: Log4j2-Imports durch SLF4J-Imports ersetzen - Minimale
log4j2.xmlinsrc/main/resources/anlegen LoggingConfiguratorinadapter.out.logginganlegen (Skelett)mvn clean verifylaufen lassen, muss grün seingrep -rn "org.apache.logging.log4j" src/main/java/ | grep -v "adapter/out/logging\|bootstrap"muss leer sein- Commit
M1-AP04: Logging-Adapter, SLF4J-Fassade etabliert - Abschlussbericht schreiben
Abnahmekriterien
- kein Import von
org.apache.logging.log4j.*außerhalb vonadapter.out.loggingundbootstrap(Grep-Nachweis im Bericht) log4j2.xmlinsrc/main/resources/vorhandenLoggingConfigurator-Klasse inadapter.out.loggingvorhanden (mindestens Skelett)mvn clean verifyist 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.xmlhat 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.