ログを時間ごとにロールし、PHP の通常のログ分析を使用して問題を解決することができます
$logLine ='127.0.0.1 - - [22/May/2015:17:09:13 +0800] "GET /sale/images/y-select.png HTTP/1.1" 200 1095'; $pattern = '/^(?P<ip>[0-9.]+) - - \[(?P<time>[^\]]+)\]+ "GET (?P<url>[^ ]+) HTTP\/1.[1|0|2]" (?P<status>[0-9.]+) (?P<size>[0-9.]+)/i'; preg_match($pattern, $log, $match); //var_dump($match); $ip = $match['ip']; $time = strtotime($match['time']); $url = $match['url']; $status = $match['status']; $size = $match['size']; printf("IP:%s 访问时间:%s URL:%s 状态:%s 文件尺寸:%s",$ip,$time,$url,$status,$size);
これも行うことができます
正規表現を使用して Apache ログ ファイルを区切ります
www.MyException.Cn ネットユーザーの共有日: 2015-08 -26 閲覧数: 17 回
Apache ログ ファイルを区切るには正規表現を使用します
一般的なログ形式の Apache ログ ファイルの例:
127.0.0.1 - Frank [10/Oct/2000:13:55:36 -0700] ] "GET /apache_pb.gif HTTP/1.0" 200 2326
結合ログ形式の Apache ログ ファイルの例:
127.0.0.1 - Frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb .gif HTTP/ 1.0" 200 2326 "http://www.example.com/start.html" "Mozilla/4.08 [en] (Win98; I ;Nav)"
クライアントの IP アドレス。
client identd プロセスによって決定される RFC1413 ID (アイデンティティ)、出力内の記号「-」は、ここでの情報が無効であることを示します。
Web ページにアクセスするために HTTP 認証システムによって取得されるクライアント ID (ユーザー ID)。Web ページがパスワードで保護されていない場合、この項目は「-」になります。
サーバーがリクエストの処理を完了する時刻。
クライアントのアクションによって要求されたリソースによって使用されるプロトコル。
サーバーからクライアントに返されるステータス コード。
応答ヘッダーを除いてクライアントに返されるバイト数。情報が返されない場合、この項目は「-」になります。
「リファラー」リクエストヘッダー。
「User-Agent」リクエストヘッダー。
情報の抽出に使用される正規表現は次で構成されます:
^: 各行の先頭と一致します。
([0-9.]+)s: IP アドレスと一致します。
([w.-]+)s: 数字、文字、アンダースコア、またはドット区切り文字で構成される ID と一致します。
([w.-]+)s: 数字、文字、アンダースコア、またはドット区切り文字で構成されるユーザー ID と一致します。
([[^[]]+])s: マッチング時間。
"((?:[^"]|")+)"s: リクエスト情報の照合。エスケープされた二重引用符が二重引用符で囲まれている場合があります。
(d{3})s: ステータス コードの照合。 s: 応答バイト数または - と一致します。
"((?:[^"]|")+)"s: 「Referer」リクエスト ヘッダーと一致します。エスケープされた二重引用符が二重引用符内に表示される場合があります。
"((?:[^"]|")+)": 「User-Agent」リクエスト ヘッダーと一致し、二重引用符内にエスケープされた二重引用符が含まれる場合があります。
$: 行末と一致します。最終式は次のようになります:
^([0-9.]+)s([w.-]+)s([w.-]+)s([[^[]]+])s"(( ?:[ ^"]|")+)"s(d{3})s(d+|-)s"((?:[^"]|")+)"s"((?:[^" ]|" )+)"$