【问题标题】:How to get the latest error details from the EventViewer log using c#?如何使用 c# 从 EventViewer 日志中获取最新的错误详细信息?
【发布时间】:2016-09-19 11:00:46
【问题描述】:

我正在使用 C# 代码从 eventviewer 日志文件中获取特定错误的错误消息。

static void Main(string[] args)
    {
      EventLog myLog = new EventLog(); 
      myLog.Log = "Application";
      myLog.Source = "Application Error";
      foreach (System.Diagnostics.EventLogEntry entry in myLog.Entries)
      {
         if (entry.TimeGenerated == DateTime.Parse("9/19/2016 11:48:58 AM"))
            {
               using (StreamWriter writer = File.AppendText("Example.txt"))
            {
                writer.WriteLine(error_Message);
            }
       }
     }

这是我的主要功能,我在应用程序日志中获取特定错误的错误消息,并在文本文件中打印错误消息。因此,我不想使用日期时间访问错误,而是想访问日志文件中的最新错误。如何获取日志文件中最后输入的错误?提前致谢。

【问题讨论】:

  • 不明白为什么要比较最后一条错误消息时的时间戳。

标签: c# .net event-viewer


【解决方案1】:
EventLog myLog = new EventLog(); 
myLog.Log = "Application";
myLog.Source = "Application Error";

var lastEntry = myLog.Entries[myLog.Entries.Count-1];
var last_error_Message = lastEntry.Message;

for(int index=myLog.Entries.Count-1; index>0;index--)
{
    var errLastEntry = myLog.Entries[index];
    if (errLastEntry.EntryType == EventLogEntryType.Error)
    {
        //this is the last entry with Error
        var appName = errLastEntry.Source;
        break;
    }
}

【讨论】:

  • 谢谢。答案很好。但是在日志文件中,有Information、Warnings和Error。这段代码可以捕获最后一个条目的消息,而不管类型是什么,即warning、Informaton或error。即使最后一个条目是警告或信息,我如何更改代码以单独捕获最后一个错误消息。var lastEntry = myLog.Source[myLog.Source.Count - 1]; 这会工作吗?但它告诉我错误
  • 感谢您的回答。这给了我预期的结果
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-26
  • 1970-01-01
  • 1970-01-01
  • 2016-01-02
  • 2012-06-20
相关资源
最近更新 更多