Verbesserung
Wichtig
Detail
Fehlerbehebung
Wichtig
Detail
Detail
#27498
Bei allen explizit gestarteten Threads ungefangene Exceptions loggen
Wenn ein Thread durch eine Exception beendet wird, soll diese in das Anwendungslog geschrieben werden. Bisher landet sie im Log des Anwendungsservers, also zum Beispiel im Log von Jetty. Das ist ungünstig, weil dort üblicherweise nicht nach ihr gesucht wird. Zusätzlich ist das ungünstig, weil der Zugriff darauf eventuell schwieriger ist als beim Anwendungslog: Letzteres wird in der Anwendung selber in der Administration angezeigt. Das Log des Anwendungsservers aber normalerweise aber nicht.
Anwendung
Um das zu erreichen, gibt es in Java UncaughtExceptionHandler. Um das nicht an jedem einzelnen Threads explizit setzen zu müssen, gibt es Thread.setDefaultUncaughtExceptionHandler(...). Das wird jetzt im tl:AbstractStartStopListener aufgerufen. Anwendungen können das durch überschreiben der Methode initDefaultUncaughtExceptionHandler wenn nötig anpassen oder abschalten.
Test
Nur mittels Code Änderungen möglich: Nach dem Starten der Anwendung einen neuen Thread starten. Dieser muss eine Exception werfen, die nicht gefangen wird.
Erwartung: Die Exception taucht inklusive Stacktrace im Anwendungslog auf.