本演练演示了如何创建一个自定义日志侦听器,并将其配置为侦听 My.Application.Log
对象的输出。
入门指南
日志侦听器必须继承自 TraceListener 类。
创建侦听器
在应用程序中,创建一个名为
SimpleListener
继承自 TraceListener的类。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 属性允许运行代码的主机确定代码公开主机保护同步。
注释
该 HostProtectionAttribute 属性仅在托管公共语言运行时和实现主机保护(如 SQL Server)的非托管应用程序上有效。
若要确保 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 文件:
在 “项目” 菜单上,选择“ 添加新项”。
在“ 添加新项 ”对话框中,选择 “应用程序配置文件”。
单击 添加。
找到
<listeners>
部分,该部分位于<source>
属性为“DefaultSource”的name
部分当中,后者又位于<sources>
部分之下。<sources>
部分位于<system.diagnostics>
部分当中,后者又位于顶级<configuration>
部分之下。将此元素添加到
<listeners>
节:<add name="SimpleLog" />
找到
<sharedListeners>
部分,该部分位于<system.diagnostics>
部分当中,后者又位于顶级<configuration>
部分之下。将此元素添加到该
<sharedListeners>
部分:<add name="SimpleLog" type="SimpleLogStrongName" />
将
SimpleLogStrongName
的值更改为该侦听器的强名称。