1
我已经得到了我目前的Apache日志格式的工作原理是正则表达式:PHP正则表达式来格式化Apache日志
preg_match("/^(\S+) (\S+) (\S+) \[([^:]+):(\d+:\d+:\d+) ([^\]]+)\] \"(\S+) (.*?) (\S+)\" (\S+) (\S+) (\".*?\") (\".*?\")$/", $line, $matches); // pattern to format the line
它的工作原理与此日志:
127.0.0.1 - - [19/Jun/2012:11:38:37 +0200] "GET /some_page HTTP/1.1" 200 8243 "http://example.com/referrer" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.56 Safari/536.5"
现在我已经改变了apache日志格式以包含服务器名称,因此新日志将为:
127.0.0.1 - - [19/Jun/2012:11:38:37 +0200] **servername.com** "GET /some_page HTTP/1.1" 200 8243 "http://example.com/referrer" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.56 Safari/536.5"
它唯一加入的是servername.com在“GET/url ...”之前。
现在,正则表达式不再工作,我不知道我需要修改什么才能使它匹配新的日志格式。
嗨,它的工作!谢谢!我刚刚在它周围加了“(”和“)”,就像这样([\ w。] +)在比赛中被捕获。 –
哦,当然,我忘了那些:) –