演练:创建自定义日志侦听器 (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 特性,运行代码的主机可以确定由代码公开主机保护的同步。

    提示

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

为确保 My.Application.Log 使用您的日志侦听器,应为包含您的日志侦听器的程序集指定强名称。

下一个过程提供了创建强名称日志侦听器程序集的一些简单步骤。 有关更多信息,请参见 创建和使用具有强名称的程序集

为日志侦听器程序集指定强名称

  1. 在**“解决方案资源管理器”中选择一个项目。 在“项目”菜单上,选择“属性”**。 有关更多信息,请参见 项目设计器介绍

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

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

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

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

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

  6. 在**“输入密码”“确认密码”**框中输入一个密码。

  7. 单击**“确定”**。

  8. 重新生成应用程序。

添加侦听器

既然程序集已具有强名称,您就需要确定侦听器的强名称,以便 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

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

    - 或 -

    如果存在一个 app.config 文件:

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

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

    3. 单击**“添加”**。

  2. 在具有 name 特性“DefaultSource”的 <source> 节(位于 <sources> 节中)中找到 <listeners> 节。 <sources> 节位于顶级 <configuration> 节的 <system.diagnostics> 节中。

  3. 将此元素添加到 <listeners> 节中:

    <add name="SimpleLog" />
    
  4. 在顶级 <configuration> 节的 <system.diagnostics> 节中找到 <sharedListeners> 节。

  5. 将此元素添加到该 <sharedListeners> 节中:

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

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

请参见

任务

如何:在 Visual Basic 中记录异常

如何:编写日志消息 (Visual Basic)

演练:更改 My.Application.Log 写入信息的位置 (Visual Basic)

参考

Microsoft.VisualBasic.Logging.Log

概念

使用 Application 日志 (Visual Basic)