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.15. TraceSource - Application Configuration File - app.config

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.

Waarschijnlijk eenvoudiger dan via code (at design time) onze TraceSources en aanverwanten te configureren, is dit te doen at configuration time.
Dit kan in de Application Configuration File (app.config), en staat je toe zonder de code te hercompileren, en dus zelfs na deployment, het tracemechanisme te herconfigureren.

Veronderstel volgende opzet, waar nogmaals in code alles geconfigureerd wordt :
Visual Basic 2012 Broncode - Codevoorbeeld 813
Imports System.Diagnostics
#Const TRACE = True
Class ExampleConfigureInCode
    Private Shared myTraceSource1 As TraceSource
    Private Shared myTraceSource2 As TraceSource
    Public Shared Sub ConfigureTraceSources()
        Dim mySourceSwitch1 As New SourceSwitch("mySourchSwitchName1", _
                                                "Warning")
        Dim mySourceSwitch2 As New SourceSwitch("mySourchSwitchName2", _
                                                "Information")
        '
        Dim myConsoleTraceListener1 As New ConsoleTraceListener
        myConsoleTraceListener1.Name = "myConsoleTraceListenerName1"
        myConsoleTraceListener1.Filter = New EventTypeFilter(SourceLevels.Error)
        Dim myConsoleTraceListener2 As New ConsoleTraceListener
        myConsoleTraceListener2.Name = "myConsoleTraceListenerName2"
        myConsoleTraceListener2.Filter = _
                                      New EventTypeFilter(SourceLevels.Critical)
        Dim myTextWriterTraceListener As _
                                        New TextWriterTraceListener("trace.txt")
        myTextWriterTraceListener.Name = "myTextWriterTraceListenerName"
        myTextWriterTraceListener.Filter = New EventTypeFilter(SourceLevels.All)
        '
        myTraceSource1 = New TraceSource("myTraceSourceName1")
        myTraceSource1.Switch = mySourceSwitch1
        myTraceSource1.Listeners.Add(myConsoleTraceListener1)
        myTraceSource1.Listeners.Add(myTextWriterTraceListener)
        myTraceSource1.Listeners.Remove("Default")
        '
        myTraceSource2 = New TraceSource("myTraceSourceName2")
        myTraceSource2.Switch = mySourceSwitch2
        myTraceSource2.Listeners.Add(myConsoleTraceListener2)
        myTraceSource2.Listeners.Add(myTextWriterTraceListener)
    End Sub
    Public Shared Sub Main()
        ConfigureTraceSources()
        '
        myTraceSource1.TraceEvent(TraceEventType.Critical, 1, "Message 1")
        myTraceSource1.TraceEvent(TraceEventType.Error, 2, "Message 2")
        myTraceSource1.TraceEvent(TraceEventType.Warning, 3, "Message 3")
        myTraceSource1.TraceEvent(TraceEventType.Information, 4, "Message 4")
        myTraceSource1.TraceEvent(TraceEventType.Verbose, 5, "Message 5")
        myTraceSource1.Flush()
        '
        myTraceSource2.TraceEvent(TraceEventType.Critical, 6, "Message 6")
        myTraceSource2.TraceEvent(TraceEventType.Error, 7, "Message 7")
        myTraceSource2.TraceEvent(TraceEventType.Warning, 8, "Message 8")
        myTraceSource2.TraceEvent(TraceEventType.Information, 9, "Message 9")
        myTraceSource2.TraceEvent(TraceEventType.Verbose, 10, "Message 10")
        myTraceSource2.Flush()
        '
        Console.ReadLine()
    End Sub
End Class
Onderstaande tabel geeft aan welke listeners naar welke boodschappen ontvangen :
                               Message 1   2   3   4   5   6   7   8   9   10
myConsoleTraceListenerName1            x   x
myConsoleTraceListenerName2                                x
myTextWriterTraceListenerName          x   x   x           x   x   x   x
Default                                                    x   x   x   x
Hetzelfde resultaat kan bekomen worden door in de Application Configuration File volgende informatie op te nemen :
Application Configuration File
<configuration>
	<system.diagnostics>
		<sources>
			<source name="myTraceSourceName1"
			        switchName="mySourceSwitchName1"
			        switchType="System.Diagnostics.SourceSwitch">
				<listeners>
					<add name="myConsoleTraceListenerName1"
					     type="System.Diagnostics.ConsoleTraceListener">
						<filter type="System.Diagnostics.EventTypeFilter"
						        initializeData="Error"/>
					</add>
					<add name="myTextWriterTraceListenerName"/>
					<remove name="Default"/>
				</listeners>
			</source>
			<source name="myTraceSourceName2"
			        switchName="mySourceSwitchName2"
			        switchType="System.Diagnostics.SourceSwitch">
				<listeners>
					<add name="myConsoleTraceListenerName2"
					     type="System.Diagnostics.ConsoleTraceListener">
						<filter type="System.Diagnostics.EventTypeFilter"
						        initializeData="Critical"/>
					</add>
					<add name="myTextWriterTraceListenerName"/>
				</listeners>
			</source>
		</sources>
		<switches>
			<add name="mySourceSwitchName1" value="Warning"/>
			<add name="mySourceSwitchName2" value="Information"/>
		</switches>
		<sharedListeners>
			<add name="myTextWriterTraceListenerName"
			     type="System.Diagnostics.TextWriterTraceListener"
			     initializeData="trace.txt">
				<filter type="System.Diagnostics.EventTypeFilter"
				        initializeData="All"/>
			</add>
		</sharedListeners>
	</system.diagnostics>
</configuration>
De applicatie zelf kan dan vereenvoudigd worden naar :
Visual Basic 2012 Broncode - Codevoorbeeld 814
Imports System.Diagnostics
#Const TRACE = True
Class ExampleConfigurationTime
    Private Shared myTraceSource1 As New TraceSource("myTraceSourceName1")
    Private Shared myTraceSource2 As New TraceSource("myTraceSourceName2")
    Public Shared Sub Main()
        myTraceSource1.TraceEvent(TraceEventType.Critical, 1, "Message 1")
        myTraceSource1.TraceEvent(TraceEventType.Error, 2, "Message 2")
        myTraceSource1.TraceEvent(TraceEventType.Warning, 3, "Message 3")
        myTraceSource1.TraceEvent(TraceEventType.Information, 4, "Message 4")
        myTraceSource1.TraceEvent(TraceEventType.Verbose, 5, "Message 5")
        myTraceSource1.Flush()
        '
        myTraceSource2.TraceEvent(TraceEventType.Critical, 6, "Message 6")
        myTraceSource2.TraceEvent(TraceEventType.Error, 7, "Message 7")
        myTraceSource2.TraceEvent(TraceEventType.Warning, 8, "Message 8")
        myTraceSource2.TraceEvent(TraceEventType.Information, 9, "Message 9")
        myTraceSource2.TraceEvent(TraceEventType.Verbose, 10, "Message 10")
        myTraceSource2.Flush()
        '
        Console.ReadLine()
    End Sub
End Class
Opnieuw krijgen we listeners die naar dezelfde boodschappen luisteren.

Bij creatie van de TraceSource objecten geef je aan de constructor mee welke de namen zijn van deze objecten.  Deze komen overeen met de namen uit de configuration file.

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