演练:筛选 My.Application.Log 输出 (Visual Basic)
本演练演示如何更改 My.Application.Log 对象的默认日志筛选,以控制从 Log 对象传递到侦听器的信息以及侦听器写入的信息。 由于配置信息存储在应用程序的配置文件中,因此您甚至可以在生成应用程序之后更改日志记录行为。
入门
My.Application.Log 写入的每条消息都具有一个相关联的严重性级别,使用该级别的筛选机制来控制日志输出。 此示例应用程序使用 My.Application.Log 方法写入具有不同严重性级别的若干条日志消息。
生成示例应用程序 |
打开一个新的 Visual Basic Windows 应用程序项目。
将名为 Button1 的按钮添加到 Form1 中。
在 Button1 的 Click 事件处理程序中,添加以下代码:
在调试器中运行此应用程序。
按“Button1”。
应用程序将下面的信息写入其调试输出和日志文件中。
DefaultSource Information: 0 : In Button1_Click
DefaultSource Error: 2 : Error in the application.
关闭应用程序。
|
有关如何查看应用程序的调试输出窗口的信息,请参见 “输出”窗口。 有关应用程序日志文件的位置的信息,请参见 演练:确定 My.Application.Log 写入信息的位置 (Visual Basic)。
提示
默认情况下,应用程序在关闭时会刷新日志文件的输出。
在上面的示例中,对 WriteEntry 方法的第二次调用和对 WriteException 方法的调用将产生日志输出,然而对 WriteEntry 方法的第一次和最后一次调用则不会。 这是因为 WriteEntry 和 WriteException 的严重性级别分别为“信息”和“错误”,而 My.Application.Log 对象的默认日志筛选允许这两种级别。 但是,严重性级别为“启动”和“停止”的事件将不能产生日志输出。
所有 My.Application.Log 侦听器的筛选
My.Application.Log 对象使用一个名为 DefaultSwitch 的 SourceSwitch 来控制其要从 WriteEntry 方法和 WriteException 方法传递到日志侦听器的消息。 您可以在应用程序的配置文件中配置 DefaultSwitch,方法是将其值设置为 SourceLevels 枚举值之一。 默认情况下,其值为“信息”。
此表显示在给定特定的 DefaultSwitch 设置的情况下,日志将消息写入侦听器时所需的严重性级别。
DefaultSwitch 值 |
输出所需的消息严重性 |
Critical |
Critical |
Error |
Critical 或 Error |
Warning |
Critical、Error 或 Warning |
Information |
Critical、Error、Warning 或 Information |
Verbose |
Critical、Error、Warning、Information 或 Verbose |
ActivityTracing |
Start、Stop、Suspend、Resume 或 Transfer |
All |
允许所有的消息。 |
Off |
阻止所有的消息。 |
提示
WriteEntry 和 WriteException 方法中的每一个都拥有一个不指定严重性级别的重载。 WriteEntry 重载的隐式严重性级别为“信息”,而 WriteException 重载的隐式严重性级别为“错误”。
此表说明日志输出在前面的示例所示: 使用默认的DefaultSwitch设置的"信息",只是第二个调用WriteEntry方法和调用WriteException方法产生日志输出。
仅记录活动跟踪事件 |
在“解决方案资源管理器”中右击 app.config,然后选择“打开”。
- 或 -
如果没有 app.config 文件,则:
在“项目”菜单上选择“添加新项”。
在“添加新项”对话框中,选择“应用程序配置文件”。
单击“添加”。
找到 <switches> 节,该节位于顶级 <configuration> 节中的 <system.diagnostics> 节内。
查找将 DefaultSwitch 添加到开关集合的元素。 该元素应当类似于下面的元素:
<add name="DefaultSwitch" value="Information" />
将 value 特性的值更改为“ActivityTracing”。
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"/>
</listeners>
</source>
</sources>
<switches>
<add name="DefaultSwitch" value="ActivityTracing" />
</switches>
<sharedListeners>
<add name="FileLog"
type="Microsoft.VisualBasic.Logging.FileLogTraceListener,
Microsoft.VisualBasic, Version=8.0.0.0,
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a,
processorArchitecture=MSIL"
initializeData="FileLogWriter"/>
</sharedListeners>
</system.diagnostics>
</configuration>
在调试器中运行此应用程序。
按“Button1”。
应用程序将下面的信息写入它的调试输出和日志文件中:
DefaultSource Start: 4 : Entering Button1_Click
DefaultSource Stop: 5 : Leaving Button1_Click
关闭应用程序。
将 value 特性的值更改回“信息”。
|
My.Application.Log 侦听器的单独筛选
上例演示如何更改所有 My.Application.Log 输出的筛选。 此示例演示如何筛选单独的日志侦听器。 默认情况下,一个应用程序有两个可以写入它的调试输出和日志文件中的侦听器。
配置文件通过允许每个日志侦听器拥有一个筛选器(类似于 My.Application.Log 的一个开关)来控制日志侦听器的行为。 仅当日志的 DefaultSwitch 和日志侦听器的筛选器都允许消息的严重性时,日志侦听器才会输出消息。
此示例演示如何为新的调试侦听器配置筛选并将其添加到 Log 对象。 应当从 Log 对象中移除默认的调试侦听器,以便调试消息无疑是来自新的调试侦听器。
仅记录活动跟踪事件 |
在“解决方案资源管理器”中右击 app.config,然后选择“打开”。
- 或 -
如果没有 app.config 文件,则:
在“项目”菜单上选择“添加新项”。
在“添加新项”对话框中,选择“应用程序配置文件”。
单击“添加”。
在“解决方案资源管理器”中右击 app.config。 选择“打开”。
在具有 name 特性“DefaultSource”的 <source> 节中找到 <listeners> 节,它位于 <sources> 节下面。 <sources> 节位于顶级 <configuration> 节的 <system.diagnostics> 节中。
将此元素添加到 <listeners> 节中:
<!-- Remove the default debug listener. -->
<remove name="Default"/>
<!-- Add a filterable debug listener. -->
<add name="NewDefault"/>
在顶级 <configuration> 节的 <system.diagnostics> 节中找到 <sharedListeners> 节。
将此元素添加到该 <sharedListeners> 节中:
<add name="NewDefault"
type="System.Diagnostics.DefaultTraceListener,
System, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089,
processorArchitecture=MSIL">
<filter type="System.Diagnostics.EventTypeFilter"
initializeData="Error" />
</add>
EventTypeFilter 筛选器将 SourceLevels 的一个枚举值作为其 initializeData 特性。
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"/>
<!-- Remove the default debug listener. -->
<remove name="Default"/>
<!-- Add a filterable debug listener. -->
<add name="NewDefault"/>
</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,
processorArchitecture=MSIL"
initializeData="FileLogWriter"/>
<add name="NewDefault"
type="System.Diagnostics.DefaultTraceListener,
System, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089,
processorArchitecture=MSIL">
<filter type="System.Diagnostics.EventTypeFilter"
initializeData="Error" />
</add>
</sharedListeners>
</system.diagnostics>
</configuration>
在调试器中运行此应用程序。
按“Button1”。
应用程序将下面的信息写入它的日志文件中:
Default Information: 0 : In Button1_Click
Default Error: 2 : Error in the application.
由于限制性筛选增多,因此应用程序写入应用程序的调试输出中的信息变少。
Default Error 2 Error
关闭应用程序。
|
有关在部署之后更改日志设置的更多信息,请参见 使用 Application 日志 (Visual Basic)。
请参见
任务
演练:确定 My.Application.Log 写入信息的位置 (Visual Basic)
演练:更改 My.Application.Log 写入信息的位置 (Visual Basic)
演练:创建自定义日志侦听器 (Visual Basic)
如何:编写日志消息 (Visual Basic)
概念
跟踪开关
记录来自应用程序的信息 (Visual Basic)