Visual Basic 2012 Voorbeelden
   

visual basic 2012 broncode voorbeelden

Blijf op de hoogte van de recente aanpassingen op vbvoorbeelden!

Microsoft Visual Studio 2012Microsoft Developers Network - Visual BasicMicrosoft .NET Framework

32.4. Trace Listeners

Print Email Deel op Twitter Deel op Facebook

Dit artikel is gepubliceerd op maandag 15 oktober 2012 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.

In vorige voorbeelden is er vanuit gegaan dat boodschappen die via de Debug of Trace klassen werden geschreven steeds op het Output toolvenster of in het Assertion Failed venster.
Er kan ook de wens bestaan deze debug of trace informatie in een andere medium te registreren, bijvoorbeeld een tekstbestand, XML bestand, database, console, ... .

In dat geval kan men andere trace listeners instellen of toevoegen om te bepalen waar naartoe of waar op de trace-informatie terecht komt.

De ConsoleTraceListener bijvoorbeeld zou je kunnen gebruiken om trace of debug informatie naar de console te schrijven.
Type TextWriterTraceListener is bruikbaar om trace of debug informatie naar een tekstbestand te schrijven, of over het algemeen naar een stream te schrijven.
Type XmlWriterTraceListener kan dan bijvoorbeeld makkelijk trace en debug informatie in een XML bestand plaatsen.
De EventLogTraceListener zend trace en debug informatie naar de eventlog, dit wordt overigens eerder als een vorm van logging gebruikt.  Over logging in een later topic meer details.

Meerdere trace listeners kunnen worden toegevoegd aan de Trace.Listeners collectie.  Men zou bijvoorbeeld trace informatie zowel naar de console als naar een XML file kunnen zenden.
Elke boodschap die via de Debug of Trace klassen worden geschreven komt terecht bij alle TraceListeners.

By default bevat de Trace.Listeners collectie reeds een DefaultTraceListener die de boodschappen die door de Debug en Trace klassen worden geschreven naar het Output toolvenster zenden.
Of in geval van de Assert en Fail methods de boodschap in een Assertion Failed dialog opwerpt.
Visual Basic 2012 Broncode - Codevoorbeeld 797
#Const DEBUG = True
#Const TRACE = True
Class Example1
    Public Shared Sub Main()
        Trace.Listeners.Add(New ConsoleTraceListener)
        Trace.Listeners.Add(New TextWriterTraceListener("trace.txt"))
        '
        Trace.WriteLine(Date.Now().ToString() & " : Trace Message")
        Debug.WriteLine(Date.Now().ToString() & " : Debug Message")
        '
        Trace.Flush()
        '
        Console.ReadLine()
    End Sub
End Class
Op de console worden boodschappen als de volgende geplaatst :
Console Application Output
19/11/2008 17:48:08 : Trace Message
19/11/2008 17:48:08 : Debug Message
Net als in het bestand trace.txt :
Tekst Bestand
19/11/2008 17:48:08 : Trace Message
19/11/2008 17:48:08 : Debug Message
Visual Studio : Ook in het Output toolvenster worden deze boodschappen geschreven.
Bemerkt hier dat de tracelisteners ook luisteren naar de boodschappen die door de Debug klasse worden geschreven.
Debug en Trace delen dezelfde tracelisteners, deze listener collectie kan je ook benaderen via Debug.Listeners.

De call naar de Flush method is hier nodig om ervoor te zorgen dat de boodschappen die de TextWriterTraceListener ontvangt weldegelijk worden doorgesast naar het bestand.
Indien gewenst kan je calls naar deze Flush method kunnen vermijden, en de informatie steeds automisch laten doorsassen door de AutoFlush property van de Trace klasse op True in te stellen.

De Trace.Listeners en Debug.Listeners collecties zijn typische collecties die bijvoorbeeld ook over Remove, RemoveAt en Clear methods beschikken om listeners uit de collectie te verwijderen of om de collectie leeg te maken.

32.4.1. TraceListeners bepalen at Configuration Time

Ook at configuration time kunnen de tracelisteners worden bepaald.

Als je in een application configuration file (app.config) voeg je in de <system.diagnostics> node volgende informatie toe :
<trace autoflush="true">
  <listeners>
    <add name="configConsoleTraceListener"
         type="System.Diagnostics.ConsoleTraceListener" />
    <add name="configTextWriterTraceListener"
         type="System.Diagnostics.TextWriterTraceListener"
         initializeData="trace.txt" />
  </listeners>
</trace>
Visual Studio : Door een nieuw item toe te voegen aan het project en in de Add New Item dialog in de category General te kiezen voor Application Configuration File wordt aan het project een bestand met de naam app.config toegevoegd.

Bij het builden wordt nu ook een bestand toegevoegd met dezelfde naam als de executable (de .exe of .dll) maar dan met de extensie .config toegevoegd.
Nu is niet meer vereist dat we at runtime deze listeners aan de Trace.Listeners collectie toevoegen.

Onze code kunnen we nu vereenvoudigen naar :
Visual Basic 2012 Broncode - Codevoorbeeld 798
#Const TRACE = True
Class Example2
    Public Shared Sub Main()
        Trace.WriteLine(Date.Now().ToString() & " : Trace Message")
        '
        Console.ReadLine()
    End Sub
End Class
Zonder onze applicatie opnieuw te compileren kunnen we nu in de application configuration file een aanpassing aanbrengen.

Bemerk ook het autoflush attribuut van de <trace> node dat hier op true wordt ingesteld om te vermijden dat we in onze code nog eens expliciet moeten flushen (via de Trace.Flush method).

Het initalizeData attribuut van de <add> node kan steeds gebruikt worden om een waarde voor de constructor van een listener te specifiëren.
In ons geval wenste we bij het creëren van de TextWriterTraceListener de bestandnaam op te geven.

Dit artikel is gepubliceerd op maandag 15 oktober 2012 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.