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)]]

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

相关推荐
一只乔哇噻7 分钟前
java后端工程师进修ing(研一版‖day49)
java·开发语言
枫叶丹410 分钟前
【Qt开发】输入类控件(二)-> QTextEdit
开发语言·qt
MintYouth35 分钟前
【精】C# 精确判断XML是否存在子节点
xml·c#
JAVA学习通40 分钟前
微服务项目->在线oj系统(Java-Spring)----[前端]
java·开发语言·前端
hrrrrb2 小时前
【Python】文件处理(二)
开发语言·python
软件黑马王子2 小时前
2025Unity超详细《坦克大战3D》项目实战案例(上篇)——UI搭建并使用和数据持久化(附资源和源代码)
游戏·ui·unity·c#
先知后行。3 小时前
QT实现计算器
开发语言·qt
掘根3 小时前
【Qt】常用控件3——显示类控件
开发语言·数据库·qt
西阳未落6 小时前
C++基础(21)——内存管理
开发语言·c++·面试
我的xiaodoujiao7 小时前
Windows系统Web UI自动化测试学习系列2--环境搭建--Python-PyCharm-Selenium
开发语言·python·测试工具