Jenkins Log Parser规则

时间:2014-09-11 14:42:15

标签: java regex jenkins logparser

我使用Jenkins Log Parser Plugin作为构建后步骤来检查构建后的错误

我将所有规则都放在一个文件中,并且该表示法支持Java regex嵌入式标志表达式:

# list keywords or regex for ERRORS:
error /(?i)error/
error / (?i)error/
error /(?i)error /
error / (?i)error /

error /(?i)error:/
error / (?i)error:/
error /(?i)error: /
error / (?i)error: /

error /Unknown database/
error /Connect failed/
error /(?i)undefined/
error /Call Stack:/



# list keywords or regex for WARNINGS:
warning /(?i)^warning/
warning /(?i)warning/
warning /(?i)warning:/

我的问题是我对正则表达式不太好,每次遇到包含"错误"它会触发警报。例如:T **错误**或Biot **错误**(我知道它可能来自我的坏表达,但如果我标记" Bioterror"或" Terror" as警告,它仍然会将它们覆盖为错误并触发警报)。

我的问题是:

  1. 排除我定义的某些字词的正确方法是什么?

  2. 这是可以实现的吗? (我认为这是插件的工作方式,因为如果我将必要的单词标记为警告,它仍会将其突出显示为错误)

1 个答案:

答案 0 :(得分:3)

你想要的是一个词边界锚,在大多数正则表达式中都是\b。它是零宽度,因此它不匹配任何字符,只是从非字符到字符的切换。

所以你的比赛将成为:

error /(?i)\berror\b/

一个正则表达式处理你试图单独处理的所有情况:前后空格,后面冒号等等。