1

我如何阅读最后输入的事件日志,或者有没有其他方法可以限制只写一次相同的事件?这段代码会有所帮助,但是还有其他可用的方法吗?

EventLog eventLog;

eventLog = new EventLog();

eventLog.Log = eventLogName;

eventLog.Source = sourceName;

foreach (EventLogEntry log in eventLog.Entries)
{
    //log.Source - do your stuff
}
4

1 回答 1

0

有一篇关于读取和写入事件日志的优秀文章。

从事件日志中读取时使用 Entries 成员。

由于该属性是只读的,因此您无法使用 Entries 修改条目或写入日志。相反,指定一个 Source 并调用 WriteEntry 来写入一个新的日志条目。您可以使用 Entries 来统计事件日志中的条目数,并查看集合中的每个 EventLogEntry。使用索引的 Item 成员检索有关特定条目的信息,例如 Message、Category、TimeWritten 或 EntryType。

仅从日志中读取时无需指定 Source。您只能为 EventLog 实例指定日志名称和 MachineName(服务器计算机名称)属性。在任何一种情况下,Entries 成员都会自动填充事件日志的条目列表。您可以为此列表中的项目选择适当的索引来读取各个条目。

读取和写入日志条目之间的一个重要区别是不需要显式调用读取方法。指定 Log 和 MachineName 后,将自动填充 Entries 属性。如果更改 Log 或 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 。

于 2013-04-19T15:46:21.910 回答