Das im folgenden beschriebene Projekt bietet die komfortable Möglichkeit, Ausgaben eines Programms in ein separates Fenster zu machen und dort zu analysieren.
VS 2015 Projekt |
Binary |
Ein .NET-Applikation bindet UrsLoggingLib ein und ruft dessen Methoden zur Anzeige von Logging-Daten auf. Der erste Aufruf einer Methode aus UrsLoggingLib bewirkt, dass einen Instanz von UrsLoggingDisplay gestartet wird. UrsLoggingDisplay erstellt eine NamedPipe über die Logging-Daten übertragen werden können. UrsLoggingLib verbindet sich mit dieser Pipe und sendet über diese die entsprechenden Daten.
Für native C/C++-Programme gibt es eine Wrapper-DLL, die die wichtigsten Methoden für diese Programmtypen zugänglich macht.
Das Hauptelement sind das Logging-Fenster. Hier werden die Logging-Einträge gelistet. Welche Einträge angezeigt werden sollen, kann über den Nachrichtenfilter eingestellt werden. Das Logging-Fenster besitzt ein Kontext-Menü mit dem man Inhalte auswählen und in die Zwischenablage kopieren kann.
Wählt man "Text Kopieren", nur der Text der Nachrichten kopiert (rechte Spalte). "Alles kopieren" kopiert auch den Timestamp und den Nachrichtentyp. Die einzelnem Spalten werden durch ein Tabstop-Zeichen getrennt.
Über das anhaken der entsprechenden CheckBoxes kann ausgewählt werden, welche Nachrichtentypen (mittlere Spaste angezeigt werden. Standardmäßig besitzt der Filter die Einträge "Intern/Undef.", "Nachricht", "Warnung" und "Fehler". Bei Bedarf lässt er sich über das API konfigurieren.
Im Konsolen-Fenster wird Fließtext angezeigt. Es dient zur Ausgabe von unstrukturierten Informationen.
Hier lässt sich die zur Anzeige benutzte Schrift einstellen.
Hier wird angezeigt, ob eine Verbindung zu einem Client besteht. Werden Daten empfangen, wechselt das Symbol für kurze Zeit die Farbe von Blau auf Rot.
UrsLoggingLib enthält als Kernelement das Modul UrsLogging, dass sämtliche öffentlichen Methoden bereit stellt. Die Implementierung als Modul bewirkt, dass sämtliche Methoden ohne die Angabe eines Klassennamens aufgerufen werden können.
Die Methode UrsInitLogging erlaubt es, Einfluss auf die Art und Weise zu nehmen, wie eine Instanz von UrsLoggingDisplay geöffnet wird. Wird diese Funktion nicht verwandt, wird UrsLoggingDisplay beim ersten Aufruf einer anderen Methode mit Standardeinstellungen initialisiert.
UrsInitLogging besitzt zwei optionale Parameter:
UrsLoggingDisplay zeigt nach dem Verbindungsaufbau die Nachricht "Client connected" an und die Verbindungsanzeige wechselt auf blau .
Zu Erwähnen wäre an dieser Stelle die Eigenschaft ThrowConnectExecptions. Wenn diese den Wert True hat, wird eine Exception geworfen, wenn keine Verbindung zu der Pipe aufgebaut werden kann. Dieses Problem sollte normalerweise nicht auftreten, deshalb ist der Standardwert hier True. Wenn es Probleme mit der Bearbeitung von Exceptions gibt, sollte diese Eigenschaft vor Aufruf von UrsInitLogging auf False gesetzt werden.
Zur Ausgabe von Logging-Nachrichten stehen folgende Methoden zur Verfügung:
Aktuell kann nur der Nachrichtenfilter konfiguriert werden.
Im C/C++ API (UrsLoggingC) sind folgende Funktionen über eine Wrapper-Klasse auf die entsprechenden Methoden des .NET API abgebildet:
_declspec(dllexport) void UrsWriteLogItem (int MsgType, const char* charstrMsg);
_declspec(dllexport) void UrsWriteConsole(const char* charstrMsg);
Das Projekt enthält auch zwei kleine Testprogramme.
Ein kleines Programm (UrsLoggingTestApp) erlaubt es, alle Funktionen anzusprechen.
Zum Testen der C-Schnittstelle dient das Konsolenprogramm UrsLoggingTestAppC.