VB.Net – Echzeit Log-Funtkion
Bei der Erstellung einer umfangreicheren Anwendung laufen sehr viele interne Prozesse ab welche nicht visuell dargestellt werden. Diese Abläufe kann man in einer Listbox ausgeben um sehen ob das Programm macht was es soll. Eine andere Lösung besteht darin die Abläufe in einer Log Datei zuspeichern um sie später Auszuwerten oder zusehen wo eventuell die Anwendung hängen bleibt.
Mit einer Public Sub lässt sich dies auf konfortabler Art realisieren. An Stellen im Quellcode an der man eine Variable oder das Erreichen eines bestimmten Punktes dokumentieren möchte, ruft man die Sub auf und übergibt eine „Statusinformation“. Die Sub speichert diese Information praktischer Weise gleich mit Datum und Uhrzeit in ein Text- oder CSV-Datei.
Und so gehts:
Public Sub write_log_file(sub_text as string)
öffentliche Sub definieren, Übergabe Variable definieren
Dim file_stream as IO.StreamWriter = System.IO.File.AppendText(Application.StartupPath & "\log.txt")
eine Textdatei erstellen/öffnen,mit Application.StartupPath wird der Pfad zur Anwendung angeben, anschließend der Dateiname
file_Stream.WriteLine(today & ";" & TimeOfDay & ";" & sub_text)
der übergebene Text wird in log.txt geschrieben, getrennt durch „;“
oStream.Close()
der Stream wird geschlossen
End Sub
Sub schliessen
Um Ressourcen zu schonen (ständiges File öffnen, File schließen), wäre ein Speicherung der Informationen in ein Array denkbar, die Aufzeichnung würde allerdings nicht mehr in Echzeit erfolgen. Für Entwicklungszwecke ist der Ressourcenverbrauch akzeptabel.
Um die Log-Funktion abzuschalten empfielt es sich noch ein gobale Variable vom Typ Boolean zuerstellen. In der Sub wird in einer IF Schleife abgefragt ob die Logdatei tatsächlich geschrieben werden soll. Möchte man die Log-Funtkion deaktivieren, genügt es die Boolean Variable auf false zusetzen.
if write_log_bool = true then
...
..
.
End if
selbsterklärend
Hier nun noch die ganze Sub:
Public Sub write_log_file(sub_text as string)
if write_log_bool = true then
Dim file_stream as IO.StreamWriter = System.IO.File.AppendText(Application.StartupPath & "\log.txt")
file_Stream.WriteLine(today &; ";" & TimeOfDay & ";" & sub_text)
oStream.Close()
End if
End Sub