{"id":10518,"date":"2009-04-01T07:03:43","date_gmt":"2009-04-01T06:03:43","guid":{"rendered":"http:\/\/funrecycler.com\/?p=491"},"modified":"2009-04-01T07:03:43","modified_gmt":"2009-04-01T06:03:43","slug":"vbnet-echzeit-log-funtkion","status":"publish","type":"post","link":"https:\/\/funrecycler.com\/index.php\/2009\/04\/01\/vbnet-echzeit-log-funtkion\/","title":{"rendered":"VB.Net &#8211; Echzeit Log-Funtkion"},"content":{"rendered":"<p>Bei der Erstellung einer umfangreicheren Anwendung laufen sehr viele interne Prozesse ab welche nicht visuell dargestellt werden. Diese Abl\u00e4ufe kann man in einer Listbox ausgeben um sehen ob das Programm macht was es soll. Eine andere L\u00f6sung besteht darin die Abl\u00e4ufe in einer Log Datei zuspeichern um sie sp\u00e4ter Auszuwerten oder zusehen wo eventuell die Anwendung h\u00e4ngen bleibt.<br \/>\nMit einer Public Sub l\u00e4sst sich dies auf konfortabler Art realisieren. An Stellen im Quellcode an der man eine Variable oder das Erreichen eines bestimmten Punktes dokumentieren m\u00f6chte, ruft man die Sub auf und \u00fcbergibt eine &#8222;Statusinformation&#8220;. Die Sub speichert diese Information praktischer Weise gleich mit Datum und Uhrzeit in ein Text- oder CSV-Datei.<br \/>\nUnd so gehts:<!--more--><\/p>\n<pre lang=\"VB\">Public Sub write_log_file(sub_text as string)<\/pre>\n<p>\u00f6ffentliche Sub definieren, \u00dcbergabe Variable definieren<\/p>\n<pre lang=\"VB\">Dim file_stream as IO.StreamWriter = System.IO.File.AppendText(Application.StartupPath & \"\\log.txt\")<\/pre>\n<p>eine Textdatei erstellen\/\u00f6ffnen,mit Application.StartupPath wird der Pfad zur Anwendung angeben, anschlie\u00dfend der Dateiname<\/p>\n<pre lang=\"VB\">file_Stream.WriteLine(today & \";\" & TimeOfDay & \";\" & sub_text)<\/pre>\n<p>der \u00fcbergebene Text wird in log.txt geschrieben, getrennt durch &#8222;;&#8220;<\/p>\n<pre lang=\"VB\">oStream.Close()<\/pre>\n<p>der Stream wird geschlossen<\/p>\n<pre lang=\"VB\">End Sub<\/pre>\n<p>Sub schliessen<br \/>\nUm Ressourcen zu schonen (st\u00e4ndiges File \u00f6ffnen, File schlie\u00dfen), w\u00e4re ein Speicherung der Informationen in ein Array denkbar, die Aufzeichnung w\u00fcrde allerdings nicht mehr in Echzeit erfolgen. F\u00fcr Entwicklungszwecke ist der Ressourcenverbrauch akzeptabel.<br \/>\nUm 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\u00e4chlich geschrieben werden soll. M\u00f6chte man die Log-Funtkion deaktivieren, gen\u00fcgt es die Boolean Variable auf false zusetzen.<\/p>\n<pre lang=\"VB\">if write_log_bool = true then\n...\n..\n.\nEnd if<\/pre>\n<p>selbsterkl\u00e4rend<br \/>\nHier nun noch die ganze Sub:<\/p>\n<pre lang=\"VB\">Public Sub write_log_file(sub_text as string)\nif write_log_bool = true then\n   Dim file_stream as IO.StreamWriter = System.IO.File.AppendText(Application.StartupPath & \"\\log.txt\")\n   file_Stream.WriteLine(today &; \";\" & TimeOfDay & \";\" & sub_text)\n   oStream.Close()\nEnd if\nEnd Sub<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Bei der Erstellung einer umfangreicheren Anwendung laufen sehr viele interne Prozesse ab welche nicht visuell dargestellt werden. Diese<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,14],"tags":[606,1638,2167,2731,2815],"class_list":["post-10518","post","type-post","status-publish","format-standard","hentry","category-allgemein","category-programmieren","tag-code","tag-log-function","tag-quellcode","tag-txt","tag-vbnet"],"_links":{"self":[{"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/posts\/10518","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/comments?post=10518"}],"version-history":[{"count":0,"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/posts\/10518\/revisions"}],"wp:attachment":[{"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/media?parent=10518"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/categories?post=10518"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/tags?post=10518"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}