C# EventLog获取Windows日志进行查询设置多个EventLogQuery查询条件

cs 复制代码
public void initMonitorEventLog()
{
    EventLogSession session = new EventLogSession();
    EventLogQuery query = new EventLogQuery("Security", PathType.LogName,   "*[System/EventID=4663]") 
    {
        TolerateQueryErrors = true,
        Session = session
    };

    EventLogWatcher logWatcher = new EventLogWatcher(query);

    logWatcher.EventRecordWritten += new    EventHandler<EventRecordWrittenEventArgs>(LogWatcher_EventRecordWritten);

    try
    {
        logWatcher.Enabled = true;
    }
    catch (EventLogException ex)
    {
        Console.WriteLine(ex.Message);
        Console.ReadLine();
    }    
}
cs 复制代码
private void LogWatcher_EventRecordWritten(object sender, EventRecordWrittenEventArgs e)
{
    EventRecord eventRecord = e.EventRecord;
    var time = e.EventRecord.TimeCreated;
    var id = e.EventRecord.Id;
    var logname = e.EventRecord.LogName;
    var level = e.EventRecord.Level;
    var task = e.EventRecord.TaskDisplayName;
    var opCode = e.EventRecord.OpcodeDisplayName;
    var machineName = e.EventRecord.MachineName;
    string providerName = eventRecord.ProviderName;
    eventRecord.ToXml();
    Console.WriteLine(eventRecord.FormatDescription());
    //Console.WriteLine($@"{time}, {id}, {logname}, {level}, {task}, {opCode}, {machineName},{providerName}");
}

其中,EventLogQuery构造函数的第三个参数是Windows日志的查询筛选条件。我在网上查想要筛选监视多个EventID的情况,按照XPath的语法写,一直都没办法写对。后面受到外国博主的启发,在下图的Windows日志里面设置筛选条件,然后切换XML的视图,能看到自动生成的查询条件,复制到代码里就行了。

cs 复制代码
*[System[(EventID=4663 or EventID=5142 or EventID=5144)]]

就是这个条件,复制到代码里就搞定了。

相关推荐
叶小鸡1 小时前
Java 篇-项目实战-苍穹外卖-笔记汇总
java·开发语言·笔记
AI人工智能+电脑小能手1 小时前
【大白话说Java面试题】【Java基础篇】第22题:HashMap 和 HashSet 有哪些区别
java·开发语言·哈希算法·散列表·hash
时空系2 小时前
第10篇:继承扩展——面向对象编程进阶 python中文编程
开发语言·python·ai编程
CHANG_THE_WORLD3 小时前
python 批量终止进程exe
开发语言·python
古城小栈3 小时前
从 cargo-whero 库中,找到提升 rust 的契机
开发语言·后端·rust
Gary Studio4 小时前
安卓HAL C++基础-智能指针
开发语言·c++
啧不应该啊4 小时前
Day1 Python 与 C 的类型区别
c语言·开发语言
cen__y5 小时前
Linux07(信号01)
linux·运维·服务器·c语言·开发语言
xingpanvip5 小时前
星盘接口开发文档:星相日历接口指南
android·开发语言·前端·css·php·lua
guygg885 小时前
基于遗传算法的双层规划模型求解MATLAB实现
开发语言·matlab