Visual Basic 和 Visual C# 概念

此演练将带您经过 Visual Studio 应用程序中事件日志记录的主要功能区。通过此演练,您将学会如何:

  • 创建 EventLog 组件。
  • 编写代码以创建和删除自定义事件日志。
  • 将各种类型的项写入自定义日志中。
  • 从自定义日志中读取项。
  • 验证日志和事件源是否存在。
  • 清除日志项。
  • 使用服务器资源管理器验证事件日志操作的结果。

创建用户界面

在此演练中,将创建 Windows 窗体并使用它上面的一系列控件启动一系列事件日志记录操作。

为应用程序创建窗体和控件

  1. 从“新建项目”对话框,创建 Visual Basic 或 C# Windows 应用程序,并将其命名为 EventLogApp1
  2. 向该 Windows 窗体添加八个按钮,并为它们设置下列属性:
    控件Text 属性Name 属性
    Button1创建自定义日志CreateLog
    Button2删除日志DeleteLog
    Button3写入项WriteEntry
    Button4清除日志ClearLog
    Button5验证日志是否存在VerifyLog
    Button6验证源是否存在VerifySource
    Button7移除事件源RemoveSource
    Button8读入项ReadEntry
  3. 依次为每个按钮执行下列操作:
    1. 在设计器中,双击该按钮以创建该按钮的默认事件处理程序。代码编辑器出现,而且出现按钮的 Click 事件的 Sub。
    2. 返回到“设计”视图,然后双击下一个按钮。
    3. 继续操作,直到为每个按钮创建了默认事件处理程序 Sub。
  4. 从工具箱的“组件”选项卡中,将 EventLog 组件拖动到窗体上。

    窗体底部的组件栏区域出现 EventLog 组件实例。

创建和删除自定义日志

在此过程中,将使用 SourceExists 方法验证您要使用的源不存在,然后使用不存在的日志的名称调用 CreateEventSource 方法。因为此日志不存在,所以当运行此代码时,系统将创建一个自定义日志。

创建自定义日志

  1. 在代码编辑器中,定位 CreateLog_Click 过程。
  2. 键入下列代码。事件的日志和源是成对创建的,在事件日志创建之前,源不能存在。创建事件日志后,EventLog 组件被配置为访问新的事件日志。
    ' Visual Basic
    ' Source cannot already exist before creating the log.
    If EventLog.SourceExists("Source1") Then
       EventLog.DeleteEventSource("Source1")
    End If
    
    ' Logs and Sources are created as a pair.
    EventLog.CreateEventSource("Source1", "NewLog1")
    ' Associate the EventLog component with the new log.
    EventLog1.Log = "NewLog1"
    EventLog1.Source = "Source1"
    
    // C#
    // Source cannot already exist before creating the log.
    if (System.Diagnostics.EventLog.SourceExists("Source1"))
    {
       System.Diagnostics.EventLog.DeleteEventSource("Source1");
    }
    
    // Logs and Sources are created as a pair.
    System.Diagnostics.EventLog.CreateEventSource("Source1", "NewLog1");
    // Associate the EventLog component with the new log.
    eventLog1.Log = "NewLog1";
    eventLog1.Source = "Source1";
    安全说明   创建事件日志时,如果资源已经存在,需要决定应进行的操作。另一进程(可能是恶意进程)可能已创建了事件日志,并拥有对该事件日志的访问权。将数据放入事件日志后,其他进程就可使用这些数据了。

删除自定义日志

  1. 在代码编辑器中,找到 DeleteLog_Click 过程。
  2. 键入下列代码:
    ' Visual Basic
    If EventLog.Exists("NewLog1") Then
       EventLog.Delete("NewLog1")
    End If
    
    // C#
    if (System.Diagnostics.EventLog.Exists("NewLog1"))
    {
       System.Diagnostics.EventLog.Delete("NewLog1");
    }

将项写入日志

在此过程中,将使用创建的 EventLog 组件实例将项写入日志中。为此,首先将该组件配置为使用刚刚创建的源字符串,然后指定要写入的两个项:信息性事件和错误事件。

将项写入日志

  1. 在代码编辑器中,找到 WriteEntry_Click 过程。
  2. 键入下列代码。该代码使用重载的 EventLog.WriteEntry 方法来写入事件日志。显示的第二个窗体可用于指定消息的类型。如果在后面的“测试代码”部分中使用服务器资源管理器来查看项,则不同类型的项将通过不同的图标来指示。
    ' Visual Basic
    EventLog1.WriteEntry("This is an informational message")
    EventLog1.WriteEntry("This is an error message", _
       Diagnostics.EventLogEntryType.Error)
    
    // C#
    eventLog1.WriteEntry("This is an informational message");
    eventLog1.WriteEntry("This is an error message", 
       System.Diagnostics.EventLogEntryType.Error);

清除日志项

在此过程中,将使用 Clear 方法从自定义日志中移除现有项。

清除日志项

  1. 在代码编辑器中,定位 ClearLog_Click 过程。
  2. EventLog 组件实例调用 Clear 方法:
    ' Visual Basic
    EventLog1.Clear()
    
    // C#
    eventLog1.Clear();

验证日志和源

在此过程中,将创建两个过程:一个验证自定义日志是否存在,另一个验证源字符串是否存在。将使用这些过程测试运行项目时执行的各种操作的结果。

验证自定义日志是否存在

  1. 在代码编辑器中,找到 VerifyLog_Click 过程。
  2. 创建计算指定的事件日志是否存在并据此显示真或假的消息框。使用此代码:
    ' Visual Basic
    Dim logExists As Boolean = EventLog.Exists("NewLog1")
    MessageBox.Show("Does the log exist? " & logExists.ToString())
    
    // C#
    bool logExists = System.Diagnostics.EventLog.Exists("NewLog1");
    MessageBox.Show("Does the log exist? " + logExists.ToString());

验证源是否存在

  1. 在代码编辑器中,找到 VerifySource_Click 过程。
  2. 创建计算指定的源是否存在并据此显示真或假的消息框。使用此代码:
    ' Visual Basic
    Dim sourceExists As Boolean = EventLog.SourceExists("Source1")
    MessageBox.Show("Does the source exist? " + sourceExists.ToString())
    
    // C#
    bool sourceExists = 
       System.Diagnostics.EventLog.SourceExists("Source1");
    MessageBox.Show("Does the source exist? " + sourceExists.ToString());

移除源

在此过程中,您将编写代码以删除源字符串。为此,您将首先验证要删除的源 (Source1) 是否存在,然后调用 DeleteEventSource 方法移除它。

移除创建的事件源

  1. 在代码编辑器中,找到 RemoveSource_Click 过程。
  2. 添加下列代码:
    ' Visual Basic
    If EventLog.SourceExists("Source1") Then
       EventLog.DeleteEventSource("Source1")
    End If
    
    // C#
    if (System.Diagnostics.EventLog.SourceExists("Source1"))
    {
       System.Diagnostics.EventLog.DeleteEventSource("Source1");
    }

读取项

在此过程中,将编写代码以循环访问事件日志的项集合并显示日志中的现有消息。

从创建的自定义日志中读取项

  1. 在代码编辑器中,找到 ReadEntry_Click 过程。
  2. 添加下列代码:
    ' Visual Basic
    Dim entry As EventLogEntry
    If EventLog1.Entries.Count > 0 Then
       For Each entry In EventLog1.Entries
          System.Windows.Forms.MessageBox.Show(entry.Message)
       Next
    Else
       MessageBox.Show("There are no entries in the log.")
    End If
    
    // C#
    if (eventLog1.Entries.Count > 0) 
    {
       foreach (System.Diagnostics.EventLogEntry entry 
          in eventLog1.Entries)
       {
          MessageBox.Show(entry.Message);
       }
    }
    else 
    {
       MessageBox.Show("There are no entries in the log.");
    }

测试代码

本节中将使用服务器资源管理器来验证代码的结果。

启动服务器资源管理器

  1. 从“视图”菜单中,访问服务器资源管理器。
  2. 展开当前服务器的节点,然后展开它下面的“事件日志”节点。
    注意   服务器资源管理器的“服务器”节点在 Visual Basic 和 Visual C# .NET 的标准版中不可用。有关更多信息,请参见 Visual Basic 标准版功能Visual C# 标准版的功能。在这种情况下,可以使用 Windows 事件查看器来查看应用程序的结果。

生成和运行应用程序

  1. 保存文件,并按 F5 键生成和启动项目。出现带有所创建的八个按钮的窗体。
  2. 单击“创建自定义日志”按钮。
    注意   必须对运行应用程序的服务器具有适当的特权,以便创建 Windows 事件日志。如果此时收到安全性错误,请与系统管理员联系。
  3. 返回到该产品,此时仍处于运行模式中,在服务器资源管理器中右击“事件日志”节点。
  4. 单击“刷新”。
  5. 验证现在 NewLog1 日志出现在“事件日志”节点中。

测试创建、删除和验证自定义日志

  1. 返回到运行的窗体,单击“验证日志是否存在”按钮。

    应出现一条其文本设置为 True 的提示。

  2. 单击“删除日志”按钮,然后再次单击“验证日志是否存在”按钮。

    这一次提示应为 False。

  3. 再次单击“创建自定义日志”按钮重新创建该日志。

测试将项写入自定义日志以及从自定义日志中读取项

  1. 在窗体中,单击“写入项”按钮。
  2. 访问服务器资源管理器,并展开 NewLog1 日志。
    注意   服务器资源管理器的“服务器”节点在 Visual Basic 和 Visual C# .NET 的标准版中不可用。有关更多信息,请参见 Visual Basic 标准版功能Visual C# 标准版的功能
  3. 展开它下面的“Source1”节点。

    现在应看到两个项已添加到该日志中。一个将具有指示它是信息性项的图标,另一个将具有指示它是一个错误的图标。

  4. 返回到该窗体,然后单击“读入项”按钮。

    将收到两个提示:一个包含信息性项,而另一个包含错误项。

    注意   如果多次单击“写入项”按钮,将收到更多提示。

测试清除日志

  1. 在窗体中,单击“清除日志”按钮。
  2. 在服务器资源管理器中,右击“NewLog1”节点,然后单击“刷新”。

    现在应看到该日志不再包含项。

测试移除源字符串

  1. 在窗体中,单击“移除事件源”按钮。
  2. 单击“验证源”按钮。应收到显示 False 的提示,指示源 Source1 不再存在。
  3. 单击“写入项”按钮。
    注意   此操作将允许您将项写入日志中,因为如果源当前不存在, WriteEntry 方法将设置它。
  4. 在服务器资源管理器中,右击“NewLog1”节点,然后单击“刷新”。应在该日志中看到两个项。
  5. 再次单击“验证源”按钮。应收到显示 True 的提示,指示源 Source1 存在。
  6. 作为可选操作,您可能还希望在测试时单击“DeleteLog”按钮。这将移除日志 NewLog1 和源 Source1,以便不对系统配置做永久更改。
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值