使用 perl 快速解析 apache log
来源:互联网 发布:淘宝宝贝分类代码 编辑:程序博客网 时间:2024/06/07 23:06
功能简述
统计出日志里一个或多个页面总共访问的次数,比如aa.jsp, bb.jsp这样页面分别多少次。
实现简述
Apache单个日志文件800M。
最初程序使用Python编写,按行来统计,分别使用in(最慢)和index方法去查找,然后使用了正则匹配,程序运行时间从最初的1分50多秒优化到1分10秒左右,参考了qyb博客中提到的gc.disable(),有了一定的提升,最终还是需要1分左右。
然后随意用了Perl写了一个,用了最土鳖的<LOG>这样的按行分析,最后正则匹配,然后++,速度竟然在40-50秒之间,惊叹!后来经过shucho指点,在正则部分采用了预编译,效果那是相当惊人!800M文件只用了7秒左右。卧槽!
程序片段
# --------------------------------------------------------------------
use strict;
use Benchmark;
my $LOG_FILE = '/usr/local/apache/logs/access.log';
# 下面qr部分起了关键作用,预编译了表达式
my @EXT_LIST = map {qr/$_/} qw{
aaServlet
bbServlet
};
my $startime = new Benchmark;
my %result;
map {$result{$_} = 0} @EXT_LIST;
open LOG_FILE, $LOG_FILE;
while (<LOG_FILE>){
foreach my $ext (@EXT_LIST)
{ $result{$ext}++ if $_ =~ /$ext/; }
}
close LOG_FILE;
while (my ($key, $value) = each(%result)){
$key =~ s//(/?-xism:(.*?)/)/$1/g;
print "$key:/t$value/n";
}
printf "** %s/n/n", timestr(timediff(new Benchmark, $startime));
- 使用 perl 快速解析 apache log
- perl 使用Log::Log4perl输出日志
- Hive Job log解析——perl脚本
- 如何使用perl解析excel2007
- 使用symbolicatecrash解析crash log
- 如何快速的搭建Apache+MySQL+PHP+PERL的环境
- Perl - 快速了解Perl
- Perl 使用 sort, hash解析文件代码
- 使用perl Spreadsheet::ParseExcel 来解析xml
- Perl Log::FileSimple
- 使用symbolicatecrash解析crash log日志
- idea使用@Slf4j不能解析log
- Win2000+Apache+MySql+PHP4+PERL安装使用小结
- 使用JAXB快速解析XML
- AWStats Log for Apache分析工具使用笔记(一)
- AWStats Log for Apache分析工具使用笔记(二)
- AWStats Log for Apache分析工具使用笔记(三)
- apache perl cgi
- 《BREW进阶与精通——3G移动增值业务的运营、定制与开发》连载之19---价值蓝海
- VI命令
- dot_net3.5异步收发socket--客户端
- 空间插值方法总结
- lighttpd+modcache实现对小图片的Cache
- 使用 perl 快速解析 apache log
- redirect="true"
- python mysqldb 查询返回字典结构
- C#多态的理解
- python template mako 学习笔记
- GoogleMap的使用
- 毕业生初入职场15条绝密守则
- Hashtable 类
- awk匹配文本小记