如何使用特定时间间隔的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
我尝试使用以下代码获取指定时间间隔的事件日志。
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