演练:更改 My.Application.Log 写入信息的位置 (Visual Basic)
可以使用 My.Application.Log 和 My.Log 对象记录有关应用程序中发生的事件的信息。 本演练演示如何重写默认设置以使 Log 对象写入其他日志侦听器。
系统必备
Log 对象可将信息写入到几个日志侦听器。 在更改配置之前,需要确定日志侦听器的当前配置。 有关更多信息,请参见 演练:确定 My.Application.Log 写入信息的位置 (Visual Basic)。
您可能希望检查 如何:将事件信息写入文本文件 (Visual Basic) 或 如何:写入应用程序事件日志 (Visual Basic)。
添加侦听器
在**“解决方案资源管理器”中右击“app.config”,然后选择“打开”**。
- 或 -
如果没有 app.config 文件,则:
在**“项目”菜单上选择“添加新项”**。
在**“添加新项”对话框中,选择“应用程序配置文件”**。
单击**“添加”**。
在 <sources> 节中找到 <listeners> 节,它位于 name 特性为“DefaultSource”的 <source> 节下面。 <sources> 节位于顶级 <configuration> 节的 <system.diagnostics> 节中。
将这些元素添加到该 <listeners> 节中。
<!-- Uncomment to connect the application file log. --> <!-- <add name="FileLog" /> --> <!-- Uncomment to connect the event log. --> <!-- <add name="EventLog" /> --> <!-- Uncomment to connect the event log. --> <!-- <add name="Delimited" /> --> <!-- Uncomment to connect the XML log. --> <!-- <add name="XmlWriter" /> --> <!-- Uncomment to connect the console log. --> <!-- <add name="Console" /> -->
取消注释要接收 Log 消息的日志侦听器。
在顶级 <configuration> 节的 <system.diagnostics> 节中找到 <sharedListeners> 节。
将这些元素添加到该 <sharedListeners> 节中。
<add name="FileLog" type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" initializeData="FileLogWriter" /> <add name="EventLog" type="System.Diagnostics.EventLogTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" initializeData="sample application"/> <add name="Delimited" type="System.Diagnostics.DelimitedListTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" initializeData="c:\temp\sampleDelimitedFile.txt" traceOutputOptions="DateTime" /> <add name="XmlWriter" type="System.Diagnostics.XmlWriterTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" initializeData="c:\temp\sampleLogFile.xml" /> <add name="Console" type="System.Diagnostics.ConsoleTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" initializeData="true" />
app.config 文件的内容应类似于下面的 XML:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.diagnostics> <sources> <!-- This section configures My.Application.Log --> <source name="DefaultSource" switchName="DefaultSwitch"> <listeners> <add name="FileLog"/> <!-- Uncomment to connect the application file log. --> <!-- <add name="FileLog" /> --> <!-- Uncomment to connect the event log. --> <!-- <add name="EventLog" /> --> <!-- Uncomment to connect the event log. --> <!-- <add name="Delimited" /> --> <!-- Uncomment to connect the XML log. --> <!-- <add name="XmlWriter" /> --> <!-- Uncomment to connect the console log. --> <!-- <add name="Console" /> --> </listeners> </source> </sources> <switches> <add name="DefaultSwitch" value="Information" /> </switches> <sharedListeners> <add name="FileLog" type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" initializeData="FileLogWriter" /> <add name="EventLog" type="System.Diagnostics.EventLogTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" initializeData="sample application"/> <add name="Delimited" type="System.Diagnostics.DelimitedListTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" initializeData="c:\temp\sampleDelimitedFile.txt" traceOutputOptions="DateTime" /> <add name="XmlWriter" type="System.Diagnostics.XmlWriterTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" initializeData="c:\temp\sampleLogFile.xml" /> <add name="Console" type="System.Diagnostics.ConsoleTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" initializeData="true" /> </sharedListeners> </system.diagnostics> </configuration>
重新配置侦听器
在 <sharedListeners> 节中找到侦听器的 <add> 元素。
type 特性指定侦听器类型的名称。 此类型必须从 TraceListener 类继承。 使用强名称类型的名称以确保使用正确的类型。 有关更多信息,请参见下面的“引用强名称类型”部分。
您可以使用的一些类型包括:
一个 Microsoft.VisualBasic.Logging.FileLogTraceListener 侦听器,用于写入文件日志。
一个 System.Diagnostics.EventLogTraceListener 侦听器,用于将信息写入由 initializeData 参数指定的计算机事件日志。
System.Diagnostics.DelimitedListTraceListener 和 System.Diagnostics.XmlWriterTraceListener 侦听器,用于写入在 initializeData 参数中指定的文件。
一个 System.Diagnostics.ConsoleTraceListener 侦听器,用于写入命令行控制台。
有关其他类型的日志侦听器将信息写入何处的内容,请参考相应类型的文档。
应用程序创建日志侦听器对象时,将 initializeData 特性作为构造函数参数传递。 initializeData 特性的含义取决于跟踪侦听器。
创建日志侦听器之后,应用程序将设置该侦听器的属性。 这些属性是由 <add> 元素中的其他特性定义的。 有关特定侦听器的属性的更多信息,请参见相应侦听器类型的文档。
引用强名称类型
要确保日志侦听器使用正确的类型,就要确保使用完全限定类型名称和强名称程序集名称。 强名称类型的语法如下:
<类型名称>, <程序集名称>, <版本号>, <区域性>, <强名称>
此代码示例演示如何确定完全限定类型(在本例中为“System.Diagnostics.FileLogTraceListener”)的强名称类型名称。
Public Sub DisplayStrongName() Dim t As Type = GetType(Logging.FileLogTraceListener) MsgBox(t.FullName & ", " & t.Assembly.FullName) End Sub
这是输出,可用于唯一引用强名称类型,如以上的“添加侦听器”过程所述。
Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
请参见
任务
参考
Microsoft.VisualBasic.Logging.Log