# Walkthrough: Changing Where My.Application.Log Writes Information (Visual Basic)

You can use the My.Application.Log and My.Log objects to log information about events that occur in your application. This walkthrough shows how to override the default settings and cause the Log object to write to other log listeners.

## Prerequisites

The Log object can write information to several log listeners. You need to determine the current configuration of the log listeners before changing the configurations. For more information, see Walkthrough: Determining Where My.Application.Log Writes Information.

You may want to review How to: Write Event Information to a Text File or How to: Write to an Application Event Log.

1. Right-click app.config in Solution Explorer and choose Open.

- or -

If there is no app.config file:

2. From the Add New Item dialog box, select Application Configuration File.

2. Locate the <listeners> section, under the <source> section with the name attribute "DefaultSource", in the <sources> section. The <sources> section is in the <system.diagnostics> section, in the top-level <configuration> section.

3. Add these elements to that <listeners> section.

<!-- Uncomment to connect the application file log. -->
<!-- Uncomment to connect the event log. -->
<!-- Uncomment to connect the event log. -->
<!-- Uncomment to connect the XML log. -->
<!-- Uncomment to connect the console log. -->

4. Uncomment the log listeners that you want to receive Log messages.

5. Locate the <sharedListeners> section, in the <system.diagnostics> section, in the top-level <configuration> section.

6. Add these elements to that <sharedListeners> section.

<add name="FileLog"
type="Microsoft.VisualBasic.Logging.FileLogTraceListener,
Microsoft.VisualBasic, Version=8.0.0.0,
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
initializeData="FileLogWriter" />
type="System.Diagnostics.EventLogTraceListener,
System, Version=2.0.0.0,
Culture=neutral, PublicKeyToken=b77a5c561934e089"
initializeData="sample application"/>
type="System.Diagnostics.DelimitedListTraceListener,
System, Version=2.0.0.0,
Culture=neutral, PublicKeyToken=b77a5c561934e089"
initializeData="c:\temp\sampleDelimitedFile.txt"
traceOutputOptions="DateTime" />
type="System.Diagnostics.XmlWriterTraceListener,
System, Version=2.0.0.0,
Culture=neutral, PublicKeyToken=b77a5c561934e089"
initializeData="c:\temp\sampleLogFile.xml" />
type="System.Diagnostics.ConsoleTraceListener,
System, Version=2.0.0.0,
Culture=neutral, PublicKeyToken=b77a5c561934e089"
initializeData="true" />

7. The content of the app.config file should be similar to the following XML:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.diagnostics>
<sources>
<!-- This section configures My.Application.Log -->
<source name="DefaultSource" switchName="DefaultSwitch">
<listeners>
<!-- Uncomment to connect the application file log. -->
<!-- Uncomment to connect the event log. -->
<!-- Uncomment to connect the event log. -->
<!-- Uncomment to connect the XML log. -->
<!-- Uncomment to connect the console log. -->
</listeners>
</source>
</sources>
<switches>
</switches>
<sharedListeners>
type="Microsoft.VisualBasic.Logging.FileLogTraceListener,
Microsoft.VisualBasic, Version=8.0.0.0,
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
initializeData="FileLogWriter" />
type="System.Diagnostics.EventLogTraceListener,
System, Version=2.0.0.0,
Culture=neutral, PublicKeyToken=b77a5c561934e089"
initializeData="sample application"/>
type="System.Diagnostics.DelimitedListTraceListener,
System, Version=2.0.0.0,
Culture=neutral, PublicKeyToken=b77a5c561934e089"
initializeData="c:\temp\sampleDelimitedFile.txt"
traceOutputOptions="DateTime" />
type="System.Diagnostics.XmlWriterTraceListener,
System, Version=2.0.0.0,
Culture=neutral, PublicKeyToken=b77a5c561934e089"
initializeData="c:\temp\sampleLogFile.xml" />
type="System.Diagnostics.ConsoleTraceListener,
System, Version=2.0.0.0,
Culture=neutral, PublicKeyToken=b77a5c561934e089"
initializeData="true" />
</sharedListeners>
</system.diagnostics>
</configuration>


### To reconfigure a listener

1. Locate the listener's <add> element from the <sharedListeners> section.

2. The type attribute gives the name of the listener type. This type must inherit from the TraceListener class. Use the strongly named type name to ensure that the right type is used. For more information, see the "To reference a strongly named type" section below.

Some types that you can use are:

For information about where other types of log listeners write information, consult that type's documentation.

3. When the application creates the log-listener object, it passes the initializeData attribute as the constructor parameter. The meaning of the initializeData attribute depends on the trace listener.

4. After creating the log listener, the application sets the listener's properties. These properties are defined by the other attributes in the <add> element. For more information on the properties for a particular listener, see the documentation for that listener's type.

### To reference a strongly named type

1. To ensure that the right type is used for your log listener, make sure to use the fully qualified type name and the strongly named assembly name. The syntax of a strongly named type is as follows:

<type name>, <assembly name>, <version number>, <culture>, <strong name>

2. This code example shows how to determine the strongly named type name for a fully qualified type—"System.Diagnostics.FileLogTraceListener" in this case.

Public Sub DisplayStrongName()
Dim t As Type = GetType(Logging.FileLogTraceListener)
MsgBox(t.FullName & ", " & t.Assembly.FullName)
End Sub


This is the output, and it can be used to uniquely reference a strongly named type, as in the "To add listeners" procedure above.

Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a