更新:2007 年 11 月
此演练演示了如何创建自定义日志侦听器并将其配置为侦听 My.Application.Log 对象的输出。
开始
日志侦听器必须从 TraceListener 类继承。
创建侦听器
在您的应用程序中,创建一个从 TraceListener 继承的名为 SimpleListener 的类。
Public Class SimpleListener Inherits System.Diagnostics.TraceListener <Security.Permissions.HostProtection(Synchronization:=True)> _ Public Overloads Overrides Sub Write(ByVal message As String) MsgBox("Write: " & message) End Sub <Security.Permissions.HostProtection(Synchronization:=True)> _ Public Overloads Overrides Sub WriteLine(ByVal message As String) MsgBox("WriteLine: " & message) End Sub End Class
基类所需的 Write 和 WriteLine 方法调用 MsgBox 以显示其输出。
HostProtectionAttribute 属性应用于 Write 和 WriteLine 方法,因此这两个方法的属性匹配基类方法。通过 HostProtectionAttribute 属性,运行代码的主机可以确定由代码公开主机保护的同步。
说明:
仅在承载公共语言运行库且实现主机保护的非托管应用程序上(如 SQL Server),HostProtectionAttribute 属性才有效。
为确保 My.Application.Log 使用您的日志侦听器,应为包含您的日志侦听器的程序集指定强名称。
下一个过程提供了创建强名称日志侦听器程序集的一些简单步骤。有关更多信息,请参见创建和使用具有强名称的程序集。
为日志侦听器程序集指定强名称
在“解决方案资源管理器”中选择一个项目。在“项目”菜单上,选择“属性”。有关更多信息,请参见项目设计器介绍。
单击“签名”选项卡。
选择“为程序集签名”框。
从“选择强名称密钥文件”下拉列表中选择“<新建>”。
将打开“创建强名称密钥”对话框。
在“密钥文件名称”框中提供密钥文件的名称。
在“输入密码”和“确认密码”框中输入一个密码。
单击“确定”。
重新生成应用程序。
添加侦听器
既然程序集已具有强名称,您就需要确定侦听器的强名称,以便 My.Application.Log 可以使用您的日志侦听器。
强名称类型的格式如下所示。
<类型名称>, <程序集名称>, <版本号>, <区域性>, <强名称>
确定侦听器的强名称
下面的代码演示了如何确定 SimpleListener 的强名称类型的名称。
Public Sub DisplaySimpleListenerStrongName() Dim t As Type = GetType(SimpleListener) MsgBox(t.FullName & ", " & t.Assembly.FullName) End Sub
类型的强名称取决于您的项目。
通过强名称,可以将侦听器添加到 My.Application.Log 日志侦听器集合。
将侦听器添加到 My.Application.Log
在“解决方案资源管理器”中右击 app.config,然后选择“打开”。
- 或 -
如果存在一个 app.config 文件:
在“项目”菜单上选择“添加新项”。
在“添加新项”对话框中,选择“应用程序配置文件”。
单击“添加”。
在具有 name 属性“DefaultSource”的 <source> 节(位于 <sources> 节中)中找到 <listeners> 节。<sources> 节位于顶级 <configuration> 节的 <system.diagnostics> 节中。
将此元素添加到 <listeners> 节中:
<add name="SimpleLog" />
在顶级 <configuration> 节的 <system.diagnostics> 节中找到 <sharedListeners> 节。
将此元素添加到此 <sharedListeners> 节中:
<add name="SimpleLog" type="SimpleLogStrongName" />
将 SimpleLogStrongName 的值更改为侦听器的强名称。
请参见
任务
演练:更改 My.Application.Log 写入信息的位置
概念
使用 Application 日志 (Visual Basic)