簡體   English   中英

使用java正則表達式解析apache日志文件

[英]Parse apache log file with java regex

我試圖解析一個 apache 日志文件,並且使用以下模式運行正常:

^([\\d.]+) (\\S+) (\\S+) \\[([\\w:/]+\\s[+\\-]\\d{4})\\] \"(.+?)\" (\\d{3}) (\\d+) \"([^\"]+)\" \"([^\"]+)\"[\\W]+

但是,它中斷了以下日志:

218.30.103.62 - - [17/May/2015:11:05:11 +0000] "GET /robots.txt HTTP/1.1" 200 - "-" "Sogou web spider/4.0(+http://www.sogou.com/docs/help/webmasters.htm#07)"\

我對正則表達式並沒有真正的經驗,我幾乎在嘗試錯誤和試驗方法,任何幫助將不勝感激。 (我知道 d+ 它不應該在那里,但這幾乎是我所知道的......)

任何想法? 謝謝

你的格式是:

"%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\""

(見 這里

所以你的正則表達式將是:

"^(\\S+) (\\S+) (\\S+) \\[(.+?)\\] \\\"(.+?)\\\" (\\d{3}) (\\S+) \\\"(.+?)\\\" \\\"(.+?)\\\"[\\W]+ $"

匹配組在哪里(我使用 apache 文檔中定義的引用):

  1. %H
  2. %l
  3. %u
  4. %t(不包含[]
  5. %r
  6. %>s
  7. %b
  8. %{推薦人}i
  9. %{用戶代理}i

注意 - 您的正則表達式有點過於復雜,它失敗的原因是因為 %b 並不總是一個數字 - 當請求不返回字節時,它將是-而不是0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM