检查事件条目/仅写入事件日志一次

时间:2013-04-19 15:21:29

标签: c# .net vb.net

我如何阅读上次输入的事件日志,或者是否有其他限制只能在同一事件中写入的方法?这段代码会有所帮助,但还有其他方法吗?

EventLog eventLog;

eventLog = new EventLog();

eventLog.Log = eventLogName;

eventLog.Source = sourceName;

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

1 个答案:

答案 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