Wichtig
Detail
Wichtig
Detail
Detail
#27019
Inkonsistentes Logging: Scheduler verwendet eigene Log-Datei, dessen Tasks aber nicht
Für den Scheduler existiert eine eigene Log-Datei. Diese wird von Tasks aber nicht verwendet. Dabei ist das genau die gleiche Gegend im Code. Beides sollte daher in die gleichen Dateien loggen.
Ursache ist ein zu spezielles Pattern in der Log Konfiguration. Es wird nur genau die Klasse tl:Scheduler in die spezielle Datei umgeleitet. Statt dessen sollte das ganze Package umgeleitet werden.
Umsetzung
Das Pattern wurde auf das Package com.top_logic.util.sched geändert. Dadurch verwendet dieses Package und dessen "innere" Packages das Scheduler Log.
Die einzelnen tl:Task und tl:Batch Implementierungen wurden aber nicht dorthin umgeleitet. Der Aufwand dafür ist zu hoch: Log4j bietet keine Möglichkeit an, Klassen nach ihren Obertypen zu filtern. Das müsste selber implementiert werden.
Ebenfalls wurde nicht geändert, dass Warnungen und Fehler vom Scheduler nur in sein eigenes Log geschrieben werden. Sie werden also weiterhin nicht ins Haupt-Anwendungslog geschrieben. Auch hierfür wäre der Aufwand aufgrund von Einschränkungen von Log4j zu groß, weil das selber implementiert werden müsste.
Code Migration
Eigene Log-Konfigurationen müssen genauso angepasst werden, falls der Scheduler dort ebenfalls in eine eigene Log-Datei schreibt:
- In allen Log-Konfigurationen suchen nach: <Logger name="com.top_logic.util.sched.Scheduler"
- Überall ersetzen durch: <Logger name="com.top_logic.util.sched"
Test
- Vor dem Starten des Demos die alten Log-Dateien dort löschen. (com.top_logic.demo/tmp/app-data/logs)
- Im Demo Tasks ausführen.
- In der Datei top-logic.main.log dürfen keine Einträge aus dem Package com.top_logic.util.sched auftauchen.
- In der Datei top-logic.scheduler.log müssen Einträge von com.top_logic.util.sched.task.log.TaskLogCommon und com.top_logic.util.sched.Scheduler auftauchen.