我正在使用 fluentd、elasticsearch 和 kibana 来组织日志。不幸的是,这些日志不是使用像 apache 这样的任何标准编写的,所以我不得不自己想出格式的正则表达式。我在这里使用此站点来验证它们是否正常工作:http: //fluentular.herokuapp.com/。
日志在这里大致有这种格式:
DEBUG: 24.04.2014 16:00:00 [SingleActivityStrategy] Start Activitiy 'barbecue' zu verabeiten.
我使用的格式正则表达式如下:
format /(?<pri>([INFO]|[DEBUG]|[ERROR])+)...(?<date>(\d{2}\.\d{2}\.\d{4})).(?<time>(\d{2}:\d{2}:\d{2})).\[(?<subject>(.*))\].(?<msg>(.*))/
现在,根据应该使用正则表达式专门测试 fluentd 行为的网站判断,输出应该是这个:
Record
Key Value
pri DEBUG
date 24.04.2014
subject SingleActivityStrategy
msg Start Activitiy 'barbecue' zu verabeiten.
相反,我有这个?错误?pri 总是缩写为 DEBU。对于变成 ERRO 的 ERROR 也是如此,只有 INFO 保持 INFO。我对正则表达式不是很有经验,我很难相信这是一个错误,但它仍然让我感到困惑,非常感谢任何帮助。
我不确定我是否可以链接完整的配置文件,因为我个人不拥有这些日志文件,并且我试图将其保持在我的老板不会因为我发布敏感信息而对我生气的水平,但它肯定是需要,我会在问他我能透露多少后稍后发布。
一般来说,日志总是大致如下所示:首先是优先级,即 DEBUG、ERROR 或 INFO,然后是日期,然后是我们所说的主题,它总是写在 [] 中,最后只是一条消息。
这是一个指向我正在使用的格式的流利的链接和一个测试字符串,它以流利的方式产生正确的结果,但不在我的配置文件中:
抱歉,我无法让它像普通链接一样工作,只需点击即可。
另一个用我的格式和测试字符串测试正则表达式的链接是这个:
http://rubular.com/r/dfXOkQYNXP
tl;博士版本:
我的 td-agent 格式正则表达式切断了最后一个字母,尽管流利说它不应该。我的错还是错误?