读取应用程序和服务日志

Reading Applications and services log

我想读取存储在 Windows 事件日志中应用程序和服务日志部分下的自定义事件日志。

不幸的是,当根据其命名属性调用日志时,我收到一条错误消息,指出找不到日志。

最终我尝试从具有特定 ID 的事件中读取事件详细信息,但首先我需要能够访问日志。

这是我目前拥有的代码:

Imports System
Imports System.Diagnostics.Eventing.Reader

Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        Dim query As New EventLog("Logname as per Properties", System.Environment.MachineName)
        Dim elEventEntry As System.Diagnostics.EventLogEntry

        Dim nmbr As Integer = query.Entries.Count

        MsgBox(nmbr)

    End Sub
End Class

这是事件日志中的结构(我想阅读蓝色突出显示的部分)

有人知道如何确定正确的日志名称吗?

谢谢&BR 丹尼尔

对于许多事件日志,您需要使用 EventLogQuery

例如,如果您想查询“设置”事件日志以计算 EventID 为 1 的条目数,您可以这样做:

Imports System.Diagnostics.Eventing.Reader

Module Module1

    Sub Main()
        Dim query As New EventLogQuery("Setup", PathType.LogName, "*[System/EventID=1]")
        Dim nEvents = 0

        Using logReader = New EventLogReader(query)
            Dim eventInstance As EventRecord = logReader.ReadEvent()
            While Not eventInstance Is Nothing
                nEvents += 1
                eventInstance = logReader.ReadEvent()
            End While

        End Using

        Console.WriteLine(nEvents)

        Console.ReadLine()

    End Sub

End Module

您可以通过在 Windows 事件查看器中查看事件的 XML 来查看要查询的项目的名称。

Using 构造确保 EventLogReader 在使用后得到妥善处理。

更多信息:How to: Access and Read Event Information (from Microsoft)