C++-Programmierung: Effizienteres Logging mit Expression Templates

Expression Templates lassen sich in C++ für viele Zwecke ein­setzen. Hier helfen sie dabei, Logging-Funktionen effizienter zu machen.

Artikel verschenken
In Pocket speichern vorlesen Druckansicht 1 Kommentar lesen
Lesezeit: 14 Min.
Von
  • Detlef Wilkening
Inhaltsverzeichnis

Logging ist in vielen Systemen und Programmen ein wichtiges Hilfsmittel, um Fehler zu finden, Abläufe nachzuvollziehen und Ressourcenengpässe aufzuspüren. Aus dieser Sicht sollte ein System so viel wie möglich protokollieren, damit später detaillierte Informationen zum Ablauf zur Verfügung stehen. Allerdings kann derart umfangreiches Logging das Verhalten eines Systems stark beeinflussen: Es benötigt viel Festplattenspeicher für Logdateien und kann den Programmablauf stark verlangsamen. Wer nur begrenzte Ressourcen verfügbar hat, sollte Logging folglich sparsam einsetzen.

Eine typische Lösung dieser beiden widersprüchlichen Anforderungen besteht darin, im Code viel Logging einzubauen, es zur Laufzeit aber nur bei Bedarf auszuführen. Meist definieren Entwickler hierfür sogenannte Loglevel, die zur Laufzeit mal mehr, mal weniger protokollieren.

Im normalen Systembetrieb loggt der Prozess in der Regel nur die abstrakten Aktionen und Fehler mit, in detaillierteren Auswertungen zusätzliche Informationen wie Threads, Datenbankverbindungen und Speicher. Bei der Fehlersuche sind es Funktionsaufrufe und die Ausführung logischer Blöcke inklusive Parametern und Ergebnissen.