演练:创建自定义日志侦听器 (Visual Basic)

本演练演示如何创建自定义日志侦听器,并将其配置为侦听 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
    

    基类所需的 WriteWriteLine 方法调用 MsgBox,以显示其输入。

    HostProtectionAttribute 特性应用于 WriteWriteLine 方法,使其特性与基类方法匹配。 HostProtectionAttribute 特性使运行代码的主机能够确定代码会公开主机保护同步。

    注意

    HostProtectionAttribute 特性仅在可托管公共语言运行时且实现主机保护的非托管应用程序上有效,如 SQL Server。

若要确保 My.Application.Log 使用日志侦听器,应对包含日志侦听器的程序集执行强名称。

接下来的过程提供一些用于创建强名称日志侦听器程序集的简单步骤。 有关详细信息,请参阅创建和使用具有强名称的程序集

对日志侦听器程序集执行强名称

  1. “解决方案资源管理器” 中选择一个项目。 在 “项目” 菜单上,选择 “属性”

  2. 单击“签名”选项卡。

  3. 选择“为程序集签名”框。

  4. “选择强名称密钥文件”下拉列表中,选择<“新建”>”。

    将打开“创建强名称密钥”对话框。

  5. 在“密钥文件名”框中提供密钥文件的名称。

  6. 在“输入密码”和“确认密码”框中输入密码。

  7. 单击“确定”。

  8. 重新生成应用程序。

添加侦听器

现在程序集已具有强名称,需要确定侦听器的强名称,以便 My.Application.Log 使用日志侦听器。

强名称类型的格式如下所示。

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

确定侦听器的强名称

  • 以下代码演示如何确定 SimpleListener 的强名称类型名称。

    Public Sub DisplaySimpleListenerStrongName()
        Dim t As Type = GetType(SimpleListener)
        MsgBox(t.FullName & ", " & t.Assembly.FullName)
    End Sub
    

    该类型的强名称取决于项目。

借助强名称,可以将侦听器添加到 My.Application.Log 日志侦听器集合中。

将侦听器添加到 My.Application.Log

  1. 在“解决方案资源管理器”中右键单击 app.config,然后选择“打开”。

    \- 或 -

    如果其中有 app.config 文件:

    1. “项目” 菜单上选择 “添加新项”

    2. 在“添加新项” 对话框中,选择“应用程序配置文件” 。

    3. 单击 添加

  2. 找到 <listeners> 部分,该部分位于 <source> 属性为“DefaultSource”的 name 部分当中,后者又位于 <sources> 部分之下。 <sources> 部分位于 <system.diagnostics> 部分当中,后者又位于顶级 <configuration> 部分之下。

  3. 将此元素添加到 <listeners> 部分:

    <add name="SimpleLog" />
    
  4. 找到 <sharedListeners> 部分,该部分位于 <system.diagnostics> 部分当中,后者又位于顶级 <configuration> 部分之下。

  5. 将此元素添加到该 <sharedListeners> 部分:

    <add name="SimpleLog" type="SimpleLogStrongName" />
    

    SimpleLogStrongName 的值更改为该侦听器的强名称。

请参阅