Titel-Logo
Projektstudien
TraceLogger
Abstrakt
Beispiele
Techniken
Javadoc
UML-Klassendiagramm
Download
Basics of Cryptography
Custom JBossAS Login
SOAP Webservice
Role Based Access Control
Abstrakt

Die Verwendung der Tracelogger-Library hilft bei der Entwicklung (und Pflege) komplexer Softwaresysteme auf der Java-Plattform durch die Erzeugung eines übersichtlichen (Trace-)Logs. Im Gegensatz zu herkömmlichen Java-Loggern wird der Aufrufstapel in Abhängigkeit von der jeweiligen Aufruftiefe eingerückt dargestellt. Dies hilft bei der visuellen Orientierung während der Analyse der Debugging-Ausgaben da unmittelbar klar ist welchen Ursprung die Debugging-Ausgaben haben und sich der Steuerfluss in der Struktur des Logs teilweise wiederspiegelt. Fehler-, Warn- und Info-Meldungen werden hervorgehoben dargestellt und können in der Produktion zu traditionellen Logging-Systemen (log4j, JDK-Logger oder Logback) weitergeleitet werden (bei Auslassung der Tracing-Ausgaben). Im Idealfall ist der Laufzeit-Overhead der Tracing-Statements bzgl. der Debugging-Ausgaben in der Produktion gleich null.

Verschiedene Strategien für den Zugriff auf die Tracer können verfolgt werden. Tracer können über ihren Namen, über den gegenwärtigen Thread oder über eine blockierende Queue bezogen werden. Im Unterschied zu herkömmlichen Java-Loggern werden die Tracer nicht mit der Package-Hierarchie verknüpft sondern eher mit Threads. Die Tracer erhält man von einer TracerFactory die via XML-File bzw. -Resource konfiguriert wird.

Mit dem Aufrufstapel ist nicht der Call-Stack der Java Virtual Machine (JVM) gemeint, sondern ein separater Aufrufstapel auf den nur die zu beobachtenden Methoden abgelegt werden. Bei jedem Push und bei jedem Pop einer Methode wird im Tracelog ein entsprechender Eintrag generiert, im Falle des Pop wird zusätzlich die von der Methode verbrauchte (CPU-)Zeit notiert.

Der Generierung aussagekräftiger Dumps von Datenstrukturen steht die zeilenorientierte, sequentielle Sichtweise traditioneller Logger eher im Wege. Die Tracer bieten hingegen einen direkten Zugriff auf PrintStreams an, die auf übliche Weise benutzt werden können.

Valid XHTML 1.0 Strict