首页 / 日志 / Windows事件日志
Windows事件日志
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Windows事件日志,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1894字,纯文字阅读大概需要3分钟。
内容图文
我正在开发一个应用程序,以捕获来自多个Windows系统的事件日志(安全性).我有一个EntryWritten处理程序.我能够将大多数字段从事件查看器映射到.net中的EntryWrittenEventArgs条目.但是,我似乎找不到在事件查看器中显示的“级别”,“操作代码”和“任务类别”字段的映射.关于如何在vb.net或C#中获得此信息的任何想法?谢谢
解决方法:
System.Diagnostics命名空间中的EventLog类不包含有关Level,OpCode或Task的字段.但是,System.Diagnostics.Eventing.Reader命名空间中有EventRecord类,该类能够返回这些字段.请注意,此名称空间主要用于从远程计算机检索事件日志.即使您也可以使用它在本地计算机上获取日志,它也会打开到系统的本地管道,这使其比EventLog类要慢.但是,如果您确实需要访问这些字段,则通常使用此类:
private void LoadEventLogs()
{
List<EventRecord> eventLogs = new List<EventRecord>();
EventLogSession session = new EventLogSession();
foreach (string logName in session.GetLogNames())
{
EventLogQuery query = new EventLogQuery(logName, PathType.LogName);
query.TolerateQueryErrors = true;
query.Session = session;
EventLogWatcher logWatcher = new EventLogWatcher(query);
logWatcher.EventRecordWritten +=
new EventHandler<EventRecordWrittenEventArgs>(LogWatcher_EventRecordWritten);
try
{
logWatcher.Enabled = true;
}
catch (EventLogException) { }
// This is how you'd read the logs
//using (EventLogReader reader = new EventLogReader(query))
//{
// for (EventRecord eventInstance = reader.ReadEvent(); eventInstance != null; eventInstance = reader.ReadEvent())
// {
// eventLogs.Add(eventInstance);
// }
//}
}
}
还有LogWatcher_EventRecordWritten事件处理程序:
private void LogWatcher_EventRecordWritten(object sender, EventRecordWrittenEventArgs e)
{
var level = e.EventRecord.Level;
var task = e.EventRecord.TaskDisplayName;
var opCode = e.EventRecord.OpcodeDisplayName;
// Other properties
}
请注意,我包装了logWatcher.Enabled = true; try-catch块中的语句,因为并非所有源都允许输入写侦听器(安全性应该很好).注释掉的部分为您提供了读取所有日志(如果需要)的示例.
内容总结
以上是互联网集市为您收集整理的Windows事件日志全部内容,希望文章能够帮你解决Windows事件日志所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。