Fluentd Regexp patterns

举例:apache2 Parser Plugin

expression /^(?<host>[^ ]*) [^ ]* (?<user>[^ ]*) \[(?<time>[^\]]*)\] "(?<method>\S+)(?: +(?<path>[^ ]*) +\S*)?" (?<code>[^ ]*) (?<size>[^ ]*)(?: "(?<referer>[^\"]*)" "(?<agent>[^\"]*)")?$/
time_format %d/%b/%Y:%H:%M:%S %z

example:

192.168.0.1 - - [28/Feb/2013:12:00:00 +0900] "GET / HTTP/1.1" 200 777 "-" "Opera/12.0"

This incoming event is parsed as:

time:
1362020400 (28/Feb/2013:12:00:00 +0900)

record:
{
  "user"   : nil,
  "method" : "GET",
  "code"   : 200,
  "size"   : 777,
  "host"   : "192.168.0.1",
  "path"   : "/",
  "referer": nil,
  "agent"  : "Opera/12.0"
}

 下面具体分析上面正则表达式,大致结构为 expression /^(?<field1>[^ ]*)(?<field2>[^\\]*)\\(?<field3>[^ ]*)$/

(?<field1>[^ ]*)代表要提取一个field1的字段,内容是连续不为空格的字符
(?<field2>[^\\]*)代表要提取一个field1的字段,内容是连续不为反斜杠的字符
以此类推,这些字段之间还可以结合其他字符或者正则表达式,比方[^\d],
整个expression必须能够匹配event日志,否则会提示parse error。
(?: )? 这种结构表明中间的正则表达式匹配的字段可能存在或者不存在,
比方说下面的例子,path字段为两个空格之间的一段字符,但是也有可能这一段不存在,因为为了避免出现parse error,可以用(?: )?这种结构。
(?: +(?<path>[^ ]*) +\S*)?
 

 

转载于:https://www.cnblogs.com/nieqibest/p/9866732.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值