抓取日志
2015-11-28 12:05
399 查看
=pod 脚本主要的功能是通过抓取日志里关键字,来统计日志里的所有接口调用量和接口响应时间 =cut #!/usr/bin/perl use strict; use warnings; use File::Find; use File::Basename; use POSIX qw(strftime); my $date = strftime("%Y-%m-%d", localtime(time - 24*3600));#yestarday my $LOG_DIR="/test/test/test/"; my @dirnames; opendir FL,"$LOG_DIR" or die "Can't opendir $LOG_DIR:$!\n"; #匹配日志目录 while (my $dir_name = readdir FL) { push @dirnames,"$LOG_DIR$dir_name/mamc_api" if($dir_name =~/test\d+/); } my @log_names; #存储指定的日志文件及路径 sub wanted { push @log_names,"$File::Find::name" if($File::Find::name =~/test\.log\.$date/); } find(\&wanted,@dirnames); my $count; my (%h1,%h2); #统计接口调用总量和平均耗时,单位为毫秒 for my $logfile (@log_names) { $count++; open(LOG,$logfile); while(<LOG>) { if(/(?:.*?)\s+\[INFO\s+\]\s+(?:.*?)\s+<S\=(.*?)\,IP\=(?:.*?)\s+(?:.*?)\s+####### Finish Request\[(.*?)\]\s+Cost\[(.*?)ms\]/) { my($str1,$str2,$val)= ($1,$2,$3); $h1{$str1}{$str2}++; $h2{$str1}{$str2} += $val; } } #last if $count == 1; } #输出接口调用总量和平均耗时 for my $t1 (sort keys %h1) { for my $t2 (sort keys %{ $h1{$t1} }) { print "$t1,$t2,"; printf "%d,%.2f\n",$h1{$t1}{$t2},$h2{$t1}{$t2}/$h1{$t1}{$t2}; } }
相关文章推荐
- Perl模块编写说明
- perl如何避免脚本在windows中闪一下就关闭
- Perl中的特殊内置变量详细介绍
- linux下使用perl获取本机ip的几种方法介绍
- perl 控制结构 条件控制 if while
- Perl中的列表和数组学习笔记
- perl数据库添加、删除、更新、查询操作例子
- perl操作MongoDB报错undefined symbol: HeUTF8解决方法
- Perl中使用MIME::Lite发送邮件实例
- 什么是Perl?编程语言Perl详细介绍
- About Perl(翻译Perl官网介绍)
- perl 基本语法介绍
- perl 模式匹配参数详解
- PERL脚本 学习笔记
- perl 列表和数组变量详解
- 探索Perl的世界(更新到40集)-Perl视频教程
- perl 文件读写详细说明
- perl中5个常见错误
- Perl ASCII 字符判断
- perl 学习资料整理篇第1/4页