Heim  >  Artikel  >  Backend-Entwicklung  >  php正则解析apache日志文件文件

php正则解析apache日志文件文件

巴扎黑
巴扎黑Original
2016-11-09 13:28:511836Durchsuche

可以把日志按小时滚动,采用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身份(identity),输出中的符号"-"表示此处的信息无效。 
HTTP认证系统得到的访问该网页的客户标识(userid),如果网页没有设置密码保护,则此项将是"-"。 
服务器完成请求处理时的时间。 
客户的动作\请求的资源\使用的协议。 
服务器返回给客户端的状态码。 
返回给客户端的不包括响应头的字节数.如果没有信息返回,则此项应该是"-"。 
"Referer"请求头。 
"User-Agent"请求头。 
用来提取信息的正则表达式组成: 

^ :匹配每一行的开头。 
([0-9.]+)\s :匹配IP地址。 
([\w.-]+)\s :匹配identity,由数字字母下划线或点分隔符组成。 
([\w.-]+)\s :匹配userid,由数字字母下划线或点分隔符组成。 
(\[[^\[\]]+\])\s :匹配时间。 
"((?:[^"]|\")+)"\s :匹配请求信息,双引号中可能出现转义的双引号\"。 
(\d{3})\s :匹配状态码。 
(\d+|-)\s :匹配响应字节数或-。 
"((?:[^"]|\")+)"\s :匹配"Referer"请求头,双引号中可能出现转义的双引号\"。 
"((?:[^"]|\")+)" :匹配"User-Agent"请求头,双引号中可能出现转义的双引号\"。 
$ :匹配行尾。 
最终的表达式如下: 

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


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn