使用 C# 访问应用程序和服务日志

本文关键字:服务 日志 应用程序 访问 使用 | 更新日期: 2023-09-27 18:34:37

我想知道是否有办法访问Windows事件查看器实用程序中名为"应用程序和服务日志"的部分下的日志。问题是,我可以使用下面的代码阅读 Windows 日志下的条目。我阅读了整个条目,并获得了具有必要ID的项目,获得了前20个结果。但是我在访问应用程序和服务日志部分时找不到任何内容。我应该更改事件日志构造函数中的日志类型吗?或者是否有其他方法或类来访问应用程序和服务日志?尝试"Application"作为logType变量不起作用。

        string str = "";
        EventLog ev = new EventLog(logType, System.Environment.MachineName);
        int LastLogToShow = ev.Entries.Count;
        if (LastLogToShow <= 0)
            Console.WriteLine("No Event Logs in the Log :" + logType);
        int i;
        int k = 0;
        for (i = ev.Entries.Count - 1; i >= 0; i--)
        {
            EventLogEntry CurrentEntry = ev.Entries[i];
            if (CurrentEntry.EventID == id)
            {
                if (id == 1)
                {
                    str += "Son Açılma 'n";
                    str += "Olay Zamanı: " + CurrentEntry.TimeGenerated.ToLongDateString() + " " + CurrentEntry.TimeGenerated.ToShortTimeString() + "'n";
                }
                else if (id == 42)
                {
                    str += "Son Kapatılma 'n";
                    str += "Olay Zamanı: " + CurrentEntry.TimeGenerated.ToLongDateString() + " " + CurrentEntry.TimeGenerated.ToShortTimeString() + "'n";
                }
                else
                {
                    str += "Event type: " + CurrentEntry.EntryType.ToString() + "'n";
                    str += "Event Message: " + CurrentEntry.Message + CurrentEntry + "'n";
                    str += "Event : " + CurrentEntry.UserName + "'n" + "'n";
                    str += "Olay Zamanı: " + CurrentEntry.TimeGenerated.ToLongDateString() + " " + CurrentEntry.TimeGenerated.ToShortTimeString() + "'n";
                }
                k++;
            }
            if (k > 20)
                break;
        }
        ev.Close();
        return str;

我正在寻找的是下

应用程序和服务日志/

Microsoft/

窗户/

终端服务-远程连接管理器/

操作/

事件 ID 1149

使用 C# 访问应用程序和服务日志

我不确定您可以使用 EventLog 类访问它们,或者至少我不知道如何访问它们。我改用 EventLogQuery 类来做这件事。

我在下面提供了一个示例,我改编自这篇文章(C#:如何使用给定事件 ID 查询事件日志详细信息?(,并且应该适用于您的需求:

using System.Diagnostics.Eventing.Reader;
string logType = "Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational";
string query = "*[System/EventID=1149]";
var elQuery = new EventLogQuery(logType, PathType.LogName, query);
var elReader = new EventLogReader(elQuery);
for (EventRecord eventInstance = elReader.ReadEvent(); eventInstance != null; eventInstance = elReader.ReadEvent())
{
      // .. do stuff here
}