我用谷歌搜索了很多可能的答案,但没有运气。我正在尝试从事件日志(伪代码)中提取以下内容:
select events
where
event date/time between FromDateTime and ToDateTime
and
((Level<=2) // error, critical only
or
((Level<=x) and Provider[Name] in a specific list) // any messages for these apps
)
(第二个“Level”表达式是允许用户指定是包含Informal消息还是限制为Warnings及以上,所以我不能直接丢弃它。)
以下是我尝试使用的(最新)表达式 - 未成功。
string queryString =
"*[System[TimeCreated[@SystemTime>='" + dFrom + "' and @SystemTime<='" + dTo + "']]] " +
" and " +
"(*[System[Level<=2]]" +
" or " +
" ( " +
" *[System[Provider[@Name='<1st name>' or @Name='<2nd name>' or @Name='<3rd name>]] " +
" and " +
"System[Level<=" + maxLevel.ToString() + "]]" +
")" +
");"
我是否试图创建一个对于事件日志查询评估器来说太难的表达式,或者我只是在表达式中有一个简单的错误?我一直在尝试各种形式的表达。似乎“级别”过滤器只是被忽略了,但为什么呢?