>  기사  >  백엔드 개발  >  PHP 일반 구문 분석 Apache 로그 파일

PHP 일반 구문 분석 Apache 로그 파일

巴扎黑
巴扎黑원래의
2016-11-09 13:28:511871검색

시간 단위로 로그를 롤링하고 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 = &#39;/^(?P<ip>[0-9.]+) - - \[(?P<time>[^\]]+)\]+ "GET (?P<url>[^ ]+) HTTP\/1.[1|0|2]" (?P<status>[0-9.]+) (?P<size>[0-9.]+)/i&#39;;
preg_match($pattern, $log, $match);
//var_dump($match);
$ip     = $match[&#39;ip&#39;];
$time   = strtotime($match[&#39;time&#39;]);
$url    = $match[&#39;url&#39;];
$status = $match[&#39;status&#39;];
$size   = $match[&#39;size&#39;];
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 주소입니다.
클라이언트 identd 프로세스에 의해 결정된 RFC1413 ID(identity)입니다. 출력에서 ​​"-" 기호는 여기에 있는 정보가 유효하지 않음을 나타냅니다.
웹페이지에 접속하기 위해 HTTP 인증 시스템에서 얻은 클라이언트 ID(사용자 ID)입니다. 웹페이지가 비밀번호로 보호되어 있지 않은 경우 이 항목은 "-"입니다.
서버가 요청 처리를 완료한 시간입니다.
클라이언트 작업에서 요청한 리소스가 사용하는 프로토콜입니다.
서버가 클라이언트에 반환한 상태 코드입니다.
응답 헤더를 제외하고 클라이언트에 반환되는 바이트 수입니다. 반환되는 정보가 없는 경우 이 항목은 "-"이어야 합니다.
"리퍼러" 요청 헤더.
"User-Agent" 요청 헤더.
정보를 추출하는 데 사용되는 정규 표현식은 다음과 같이 구성됩니다.

^: 각 줄의 시작 부분과 일치합니다.
([0-9.]+)s: IP 주소를 일치시킵니다.
([w.-]+)s: 숫자, 문자, 밑줄 또는 점 구분 기호로 구성된 ID와 일치합니다.
([w.-]+)s: 숫자, 문자, 밑줄 또는 점 구분 기호로 구성된 사용자 ID와 일치합니다.
([[^[]]+])s: 일치 시간.
"((?:[^"]|")+)"s: 일치 요청 정보, 이스케이프된 큰따옴표가 큰따옴표 안에 나타날 수 있습니다.
(d{3})s: 일치 상태 코드
(d+|-)s: 응답 바이트 수 또는 -와 일치합니다.
"((?:[^"]|")+)"s: "Referer" 요청 헤더와 일치하며 큰따옴표로 묶을 수 있습니다. 이스케이프된 큰따옴표가 나타납니다."
"((?:[^"]|")+)": "User-Agent" 요청 헤더와 일치하며, 이스케이프된 큰따옴표가 큰따옴표 안에 나타날 수 있습니다.
$: 끝부분과 일치합니다. line
최종 표현식은 다음과 같습니다:

^([0-9.]+)s([w.-]+)s([w.-]+)s([[ ^[]] +])s"((?:[^"]|")+)"s(d{3})s(d+|-)s"((?:[^"]|")+ )"s" ((?:[^"]|")+)"$


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.