我如何阅读上次输入的事件日志,或者是否有其他限制只能在同一事件中写入的方法?这段代码会有所帮助,但还有其他方法吗?
EventLog eventLog;
eventLog = new EventLog();
eventLog.Log = eventLogName;
eventLog.Source = sourceName;
foreach (EventLogEntry log in eventLog.Entries)
{
//log.Source - do your stuff
}
答案 0 :(得分:0)
有一篇关于阅读和写作到事件日志的优秀文章。
从事件日志中读取时使用条目成员。
由于该属性是只读的,因此无法修改条目或写入 使用条目到日志。而是指定源和调用 WriteEntry写一个新的日志条目。您可以使用条目来计算 事件日志中的条目数,并查看中的每个EventLogEntry 采集。使用索引的Item成员来检索有关的信息 特定条目,例如Message,Category,TimeWritten或 EntryType。
仅从日志中读取时不必指定Source。 您只能指定日志名称和MachineName(服务器计算机) name)EventLog实例的属性。在任何一种情况下, 条目成员将自动填充事件日志的列表 条目。您可以为此列表中的项目选择适当的索引 阅读单个条目。
读取和写入日志条目之间的一个重要区别是 没有必要显式调用read方法。之后 指定了Log和MachineName,Entries属性为 自动填充。如果更改日志或的值 MachineName属性,Entries属性在下一个重新填充 你读它的时间。
一个例子是:
using System;
using System.Diagnostics;
class MySample{
public static void Main(){
EventLog myLog = new EventLog();
myLog.Log = "MyNewLog";
foreach(EventLogEntry entry in myLog.Entries){
Console.WriteLine("\tEntry: " + entry.Message);
}
}
}
您显然希望创建一种方法,该方法可以根据特定条件过滤或整理您的请求,以帮助限制您的选择。希望这会有所帮助。
您可能会遇到某些许可问题;因为它们与 EventLogPermissionAccess.Administer 绑定到管理员类别。
所提供的信息直接来自Microsoft here。