zoukankan      html  css  js  c++  java
  • 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*)?
     
    乌龟虽然跑的慢但是比兔子长寿啊
  • 相关阅读:
    Truevision3D
    Django模版渲染后在浏览器中出现空行的问题解决<转>
    python日期函数<转>
    web应用程序概述
    汉诺塔(hanoi)递归实现
    django1.4配置静态文件路径
    服务器端的状态维护
    树的存储结构表示
    WEB服务器端应用程序开发相关概念
    HTTP消息
  • 原文地址:https://www.cnblogs.com/nieqibest/p/9866732.html
Copyright © 2011-2022 走看看