在vb.net中读取事件日志详细信息

时间:2016-05-17 15:13:34

标签: vb.net events event-log

我现在正在编写一个应用程序,其中一部分将从Windows事件日志中抓取一些信息,它主要起作用....

  Dim strValue As String
  Dim objLogs() As EventLog
  Dim Logname As String = "Application"
  Dim objEntry As EventLogEntry
  Dim objLogEntry As EventLogEntry
  Dim objLog As EventLog
  objLogs = EventLog.GetEventLogs()

  For Each objLog In objLogs
    If objLog.LogDisplayName = Logname Then
      For Each objLogEntry In objLog.Entries
        WriteLine("EventID")
        WriteLine("Machinename")
        WriteLine("message")
      Next
    Exit For
  End If
  Next

这将很乐意写出EventID,机器名称和事件消息。 details tab in event viewer

我无法弄清楚如何输出"详细信息"事件查看器中的选项卡理想为字符串或类似字符串。

MSDN没有帮助,有人能指出我正确的方向吗?

提前致谢,

1 个答案:

答案 0 :(得分:0)

看起来EventLogEntry中的详细信息由存储为字节数组的Data属性表示。您可能需要将其转换为可读的内容。但是,Windows操作系统版本的数据格式似乎有所不同。

这是另一种方法。代码从答案复制到以下问题并转换为VB.Net。

Serializing a .NET EventLogEntry instance to XML

Imports System.Diagnostics.Eventing.Reader

Sub Main()
    Dim query As New EventLogQuery("System", PathType.LogName)
    Dim watcher As New EventLogWatcher(query)

    AddHandler watcher.EventRecordWritten, AddressOf watcher_EventRecordWritten
    watcher.Enabled = True
    Console.ReadLine()
End Sub

Public Sub watcher_EventRecordWritten(sender As Object, e As EventRecordWrittenEventArgs)
    Console.WriteLine(e.EventRecord.ToXml())
End Sub

放入简单控制台应用程序的主模块和监视系统事件。将转换为XML的事件数据写出为一个长字符串。

在Windows 7计算机上使用4.5框架。