Heim >Backend-Entwicklung >PHP-Tutorial >PHP reguläres Parsen der Apache-Protokolldatei
Sie können das Protokoll stundenweise rollen und reguläre PHP-Ausdrücke verwenden, um das Protokoll zu analysieren
$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);
Sie können dies auch tun
Reguläre Ausdrücke verwenden, um Apache-Protokolldateien zu trennen
www.MyException.Cn Geteilt von Netizens am: 26.08.2015 Aufrufe: 17 Mal
Verwenden Sie reguläre Ausdrücke, um Apache-Protokolldateien zu trennen
Beispiel für Apache-Protokolldateien im allgemeinen Protokollformat:
127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326
Kombiniert Protokollformat für Apache-Protokolldateibeispiel:
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)"
Die IP-Adresse des Clients.
Die vom Client-Identitätsprozess ermittelte RFC1413-Identität. Das Symbol „-“ in der Ausgabe zeigt an, dass die Informationen hier ungültig sind.
Die vom HTTP-Authentifizierungssystem erhaltene Client-ID (Benutzer-ID) für den Zugriff auf die Webseite. Wenn die Webseite nicht passwortgeschützt ist, lautet dieses Element „-“.
Der Zeitpunkt, zu dem der Server die Anforderungsverarbeitung abschließt.
Das Protokoll, das von der durch die Aktion des Clients angeforderten Ressource verwendet wird.
Der vom Server an den Client zurückgegebene Statuscode.
Die Anzahl der an den Client zurückgegebenen Bytes ohne Antwortheader. Wenn keine Informationen zurückgegeben werden, sollte dieses Element „-“ sein.
Anforderungsheader „Referer“.
Anforderungsheader „User-Agent“.
Der zum Extrahieren von Informationen verwendete reguläre Ausdruck besteht aus:
^: entspricht dem Anfang jeder Zeile.
([0-9.] )s: IP-Adresse anpassen.
([w.-] )s: Entspricht einer Identität, bestehend aus Zahlen, Buchstaben, Unterstrichen oder Punkttrennzeichen.
([w.-] )s: entspricht der Benutzer-ID, bestehend aus Zahlen, Buchstaben, Unterstrichen oder Punkttrennzeichen.
([[^[]] ])s: passende Zeit.
"((?:[^"]|") )"s: Match-Anfrageinformationen, maskierte doppelte Anführungszeichen können in doppelten Anführungszeichen erscheinen.
(d{3})s: Match-Statuscode
(d |-)s: Entspricht der Anzahl der Antwortbytes oder -.
"((?:[^"]|"))"s: Entspricht dem Anforderungsheader „Referer“ und kann in doppelten Anführungszeichen stehen. „eindeutige doppelte Anführungszeichen“.
"((?:[^"]|") )" : Entspricht dem Anforderungsheader „User-Agent“, und in den doppelten Anführungszeichen können maskierte doppelte Anführungszeichen vorkommen.
$ : Entspricht dem Ende der Zeile .
Der endgültige Ausdruck lautet wie folgt:
^([0-9.] )s([w.-] )s([w.-] )s([[^[]] ])s" ((?:[^"]|") )"s(d{3})s(d |-)s"((?:[^"]|") )"s"((? :[^" ]|") )"$