文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>进行WEB日志分类的N种方法

进行WEB日志分类的N种方法

时间:2010-09-07  来源:yangzhigang

进行WEB日志分类的N种方法
(源自:杨志刚 博客 http://yangzhigang.cublog.cn)

前言:
网站有一类日志是通过反向代理设备生成的,生成日志时,各个域名的所有访问日志是混在一起的,日志格式是一致的,如下:
www.x1.cn 121.11.151.36 "[05/Aug/2010:12:59:36]" "GET / HTTP/1.0" 200 3427 - -
www.x1.cn 211.14.161.36 "[05/Aug/2010:13:11:37]" "GET / HTTP/1.0" 200 3327 - -
www.x2.cn 222.11.151.36 "[05/Aug/2010:13:12:16]" "GET / HTTP/1.0" 200 3127 - -
www.x5.cn 202.11.151.36 "[05/Aug/2010:14:50:26]" "GET / HTTP/1.0" 200 5527 - -
www.x2.cn 121.11.151.36 "[05/Aug/2010:15:34:46]" "GET / HTTP/1.0" 200 7427 - -
…………………………………….

在传给日志系统分析前,要按域名分类到不同的日志文件中,以下通过几种分类方法,来对比说明一下。

方法1:(awk直接分类)
awk ‘{print $0>$1”.txt”}’ log.txt                     //分离后存到本目录
awk '{print $0>"./dirx/"$1".txt"}' log.txt                //分离后存到其它本目录


方法:2(shell脚本while循环)
#!/bin/sh
cat log1.txt | while read line;
do
newlog=`echo $line|awk '{print $1}' `
echo $line >>$newlog.txt
done

方法:3(shell脚本循环grep过滤)
#cat name.ini                //建一个所有域名的文件
www.x1.cn
www.x2.cn
www.x5.cn
………


#!/bin/sh
ServerName=./name.ini
for hostname in `cat ${name}`
do
grep ^${hostname} log.file>>$hostname.txt
done

 

方法:4(shell脚本循环grep过滤)
(在方法3的基础上,逐步减小源文件)
#!/bin/sh
name=./name.ini
for hostname in `cat ${name}`
do
grep ^${hostname} log.file>>$hostname.txt
grep -v ^${hostname} log.file >> log.file.tmp
mv log.file.tmp log.file
done

执行效率测试
测试条件 日志大小:14M;域名数量:39;文件行数:100000 
方法1: 2.361s 
方法2: 7m32.607s 
方法3: 4m54.135s 
方法4: 9m44.615s

总结:
同样是对日志按域名分类,各种方法的效率相差很大,建议采用方法一。

相关阅读 更多 +
排行榜 更多 +
我的武侠梦手游下载

我的武侠梦手游下载

角色扮演 下载
快乐连连看下载免费版

快乐连连看下载免费版

休闲益智 下载
泛滥死者布道手机版下载

泛滥死者布道手机版下载

角色扮演 下载