如何使用特定时间间隔的c#.net core删除事件日志

How to delete event log using c#.net core with specific time interval

我尝试使用以下代码获取指定时间间隔的事件日志。

EventLog log = new EventLog(application);
var Entries = log.Entries
     .Cast<EventLogEntry>()
     .Where(x => x.Source == sourceName && (x.TimeGenerated <= DateTime.Now && x.TimeGenerated >= calculatedLogTime))
     .Select(x => new
     {
         x.MachineName,
         x.Site,
         x.Source,
         x.Message,
         x.TimeGenerated,
         x.TimeWritten
     }).ToList();

从上面的代码中,获取指定时间间隔的事件日志。然后我尝试使用代码 Entries.Clear(); 清除指定的日志,但未清除日志。我已经交叉检查 windows 事件查看器。它不会从事件查看器中清除。如何用上面的代码清除事件日志?

条目未删除的原因是因为您正在对作为列表的变量调用 Clear 方法,因此它正在清除此列表,而不是实际的 EventLog。

Windows 不允许您从日志中删除单个条目。有关详细信息,请参阅 ServerFault 上的 this post。

您可以使用

完全清除日志
log.Clear();

或者如果你想删除日志你可以使用

EventLog.Delete(application);

但我认为仅使用 .NET 无法删除特定条目。

还有其他几个类似的问题也讨论过这个问题。 link 展示了一种克隆 EventLog 的方法,清除它并在没有要删除的条目的情况下重写它,我相信这是实现你想要的唯一方法。

C# Manage Windows Events