检查Splunk日志中的一个字符串,但不检查其他字符串

时间:2017-10-30 21:40:02

标签: splunk splunk-query

在Splunk中我想搜索除了并发超时异常之外的任何异常。并发超时异常在日志中显示为“java.util.concurrent.TimeoutException”或“并发超时异常”。 如果我执行如下查询:

("*exception*" AND (NOT "java.util.concurrent.TimeoutException"))

Splunk将查找不包含“java.util.concurrent.TimeoutException”的所有异常(包括那些包含“并发超时异常”的异常,这是预期的)。但是,我无法弄清楚如何消除“java.util.concurrent.TimeoutException”和“并发超时异常”。当我尝试它似乎消除所有异常,而不仅仅是包含上述两个字符串的异常。

我尝过这样的话:

("*exception*" AND NOT ("java.util.concurrent.TimeoutException" OR "concurrent timeout exception"))

认为它会找到所有例外而不是两个不受欢迎的字符串。如果它们中的任何一个被评估为true,那么该语句将为true,因此我们会发现所有异常,其中!语句为真。

没用。我尝试了其他各种组合,只是玩它无济于事:

("exception" AND (NOT "java.util.concurrent.TimeoutException" OR NOT "concurrent timeout exception"))

有人能指出我在这方面的正确方向还是提到我做错了什么?谢谢。

1 个答案:

答案 0 :(得分:1)

@JerryJeremiah的建议应该有效。在您的查询格式化时写出来,它看起来像这样:

("*exception*" AND (NOT "java.util.concurrent.TimeoutException") AND (NOT "concurrent timeout exception"))

或者,为了便于阅读:

("*exception*" AND
    (NOT "java.util.concurrent.TimeoutException") AND
    (NOT "concurrent timeout exception")
)