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.

Lesezeit: 7 Min.
In Pocket speichern
vorlesen Druckansicht Kommentare lesen 1 Beitrag
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.

Immer mehr Wissen. Das digitale Abo für IT und Technik.

  • Zugriff auf alle Inhalte von heise+
  • exklusive Tests, Ratgeber & Hintergründe: unabhängig, kritisch fundiert
  • c't, iX, Technology Review, Mac & i, Make, c't Fotografie direkt im Browser lesen
  • einmal anmelden – auf allen Geräten lesen - monatlich kündbar
  • erster Monat gratis, danach monatlich 12,95 €
  • Wöchentlicher Newsletter mit persönlichen Leseempfehlungen des Chefredakteurs
GRATIS-Monat beginnen Jetzt GRATIS-Monat beginnen Mehr Informationen zu heise+