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。] +)在比賽中被捕獲。 –
哦,當然,我忘了那些:) –