eventlog java_哪种方法更适合在C#中读取Windows事件日志? WMI或EventLog

我知道这是在原帖后很久,但我希望这对于像我这样发现EventLog类太慢的未来搜索者来说是有用的 . 以下是一些代码,用于演示搜索最新的系统启动事件:

EventLog ev = new EventLog()

{

Log = "System"

};

SystemSession sess;

DateTime t1 = DateTime.Now;

DateTime t2 = DateTime.Now;

DateTime fromDate = DateTime.Now.AddDays(-30);

TimeSpan t;

int i, j=0;

t1 = DateTime.Now;

for (i = ev.Entries.Count - 1; i >= 0; i--)

{

if (ev.Entries[i].TimeGenerated < fromDate) break;

if (ev.Entries[i].InstanceId == 12)

{

//do something ...

break;

}

}

t2 = DateTime.Now;

t = new TimeSpan(t2.Ticks - t1.Ticks);

string duration = String.Format("After {0} iterations, elapsed time = {2}",

ev.Entries.Count - i,

t.ToString("c"));

如果你只想要最新的条目,我的机器上的代码花了0.28秒,而使用EventLog类代替for()循环则为7.11秒:

var entry = (from EventLogEntry e in ev.Entries

where (e.InstanceId == 12)

&& e.TimeGenerated >= fromDate

orderby e.TimeGenerated

select e).LastOrDefault();

希望能帮助到你 .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值