{"id":1204,"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 style=\"overflow-wrap:anywhere\">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. Mit 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 &quot;Statusinformation&quot;. Die Sub speichert diese Information praktischer Weise gleich mit Datum und Uhrzeit in ein Text- oder CSV-Datei. Und so gehts:<\/p>\n<p><!--more--><\/p>\n<pre><code>Public Sub write_log_file(sub_text as string)<\/code><\/pre>\n<p style=\"overflow-wrap:anywhere\"> \u00f6ffentliche Sub definieren, \u00dcbergabe Variable definieren <\/p>\n<pre><code>Dim file_stream as IO.StreamWriter = System.IO.File.AppendText(Application.StartupPath &amp; &quot;\\log.txt&quot;)<\/code><\/pre>\n<p style=\"overflow-wrap:anywhere\"> eine Textdatei erstellen\/\u00f6ffnen,mit Application.StartupPath wird der Pfad zur Anwendung angeben, anschlie\u00dfend der Dateiname <\/p>\n<pre><code>file_Stream.WriteLine(today &amp; &quot;;&quot; &amp; TimeOfDay &amp; &quot;;&quot; &amp; sub_text)<\/code><\/pre>\n<p style=\"overflow-wrap:anywhere\"> der \u00fcbergebene Text wird in log.txt geschrieben, getrennt durch &quot;;&quot; <\/p>\n<pre><code>oStream.Close()<\/code><\/pre>\n<p style=\"overflow-wrap:anywhere\"> der Stream wird geschlossen <\/p>\n<pre><code>End Sub<\/code><\/pre>\n<p style=\"overflow-wrap:anywhere\"> Sub schliessen Um 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. 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\u00e4chlich geschrieben werden soll. M\u00f6chte man die Log-Funtkion deaktivieren, gen\u00fcgt es die Boolean Variable auf false zusetzen. <\/p>\n<pre><code>if write_log_bool = true then\n...\n..\n.\nEnd if<\/code><\/pre>\n<p style=\"overflow-wrap:anywhere\"> selbsterkl\u00e4rend Hier nun noch die ganze Sub: <\/p>\n<pre><code>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 &amp; &quot;\\log.txt&quot;)\n   file_Stream.WriteLine(today &amp;; &quot;;&quot; &amp; TimeOfDay &amp; &quot;;&quot; &amp; sub_text)\n   oStream.Close()\nEnd if\nEnd Sub<\/code><\/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":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,5],"tags":[193,194,117,87,17],"class_list":["post-1204","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\/1204","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=1204"}],"version-history":[{"count":1,"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/posts\/1204\/revisions"}],"predecessor-version":[{"id":2218,"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/posts\/1204\/revisions\/2218"}],"wp:attachment":[{"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/media?parent=1204"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/categories?post=1204"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/funrecycler.com\/index.php\/wp-json\/wp\/v2\/tags?post=1204"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}