c# - 获取操作日志EventLog失败

标签 c# event-log

当我运行此代码时,我得到InvalidOperationException:

static void Main(string[] args)
{
    var aLog = new EventLog("Microsoft-Windows-Diagnostics-Performance/Operational");
    EventLogEntry entry;
    var entries = aLog.Entries;
    var stack = new Stack<EventLogEntry>();
    for (var i = 0; i < entries.Count; i++)
    {
        entry = entries[i];
        stack.Push(entry);
    }
    entry = stack.Pop();// only display the last record
    Console.WriteLine("[Index]\t" + entry.Index +
                        "\n[EventID]\t" + entry.InstanceId +
                        "\n[TimeWritten]\t" + entry.TimeWritten +
                        "\n[MachineName]\t" + entry.MachineName +
                        "\n[Source]\t" + entry.Source +
                        "\n[UserName]\t" + entry.UserName +
                        "\n[Message]\t" + entry.Message +
                        "\n---------------------------------------------------\n");
}

异常表示:

Microsoft-Windows-Diagnostics-Performance/Operational doesn't exist on this computer

为什么?

最佳答案

已更新

由于您使用的是 EventLog 类,因此您的构造函数的有效“类别”(当然这不是命名它的正确词...)必须是 Application 系统Windows日志树下可用的任何其他日志名称,而不是在应用程序和服务日志树下。

const string LogName = "Microsoft-Windows-Diagnostics-Performance/Operational";
var query = new EventLogQuery(LogName, PathType.LogName, "*[System/Level=2]");

using (var reader = new EventLogReader(query))
{
    var currentEvent = reader.ReadEvent();
    while (currentEvent != null)
    {
        // Do your stuff here...

        // Read next event.
        currentEvent = reader.ReadEvent();
    }
}

这段代码对我有用。

请记住在提升权限下运行此命令。如果没有,您将收到未经授权的异常抛出。

第一个答案

因为您正在使用不存在的类别初始化 EventLog 类。

典型的有效类别为应用程序系统等。

EventLog 的单参数构造函数引用注册表的日志。 [^]

关于c# - 获取操作日志EventLog失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17264129/

相关文章:

vb6 - 如何了解更多关于 Application Hang 事件的信息?

c# - 动态加载类型的 SerializationException

powershell - Get-EventLog - 某些事件日志源缺少有效消息

c# - ASP.NET:整个站点都可以访问的变量

c# - 使用 ThreadPool.QueueUserWorkItem 的线程排序

c# - 为什么 WriteEntry 不适用于此 EventLog 源?

Windows 事件日志 - 事件 ID 0

c# - 使用模拟时写入事件日志

C# Pinvoke Delphi ShortString System.AccessViolationException

c# - Sharepoint 客户端对象模型更新仅一个文件夹的属性