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 小时前
c语言 文件操作
c语言·开发语言·c++·笔记·学习
xb11327 小时前
C# 定时器和后台任务
开发语言·c#
CoderCodingNo7 小时前
【GESP】C++五级练习题 luogu-P1031 [NOIP 2002 提高组] 均分纸牌
开发语言·c++·算法
测试_AI_一辰8 小时前
项目实践笔记13:多用户事实碎片 Agent 的接口测试与约束设计
开发语言·人工智能·ai编程
twj_one8 小时前
java中23种设计模式
java·开发语言·设计模式
梵刹古音8 小时前
【C语言】 跳转语句
c语言·开发语言·算法
阿猿收手吧!8 小时前
【C++】C++模板特化:精准定制泛型逻辑
开发语言·c++·算法
ghie90909 小时前
MATLAB中编写不平衡磁拉力方程
开发语言·matlab
weixin_452159559 小时前
C++与Java性能对比
开发语言·c++·算法
会叫的恐龙9 小时前
C++ 核心知识点汇总(第一日)(输入输出与变量、类型转换)
开发语言·c++