#!/usr/bin/perl -w
use strict;
use warnings;
use Tie::File; ####
# Thinkphp日志分析
# 日志基本格式:{$now} ".$_SERVER['REQUEST_URI']." | {$level}: {$message}\r\n", $type,$destination,$extra
# 使用方法:
# sub parse_log{
my $file = shift;
open my $fd , "<" , $file or die "open file error";
my %hash ; #字符串与访问次数哈希表 while(<$fd>){
# 2013-11-18 01:30:05+08:00 uri info tag-end Runtime
if( /\[ (\d{}-\d{}-\d{})T(.+) \] (.+) \| (.+) \[ (.+) \]/ ){
my $date = $ ;
my $time = $ ;
my $uri = $ ;
my $info = $ ;
my $runtime = $ ; #下面解析 /APP/?s=Module/action 的情况
if( $uri =~ /(\/.*\/\?s=\w+\/\w+)/ && $info eq "INFO: Tag[ view_end ] --END--" ){
#print "origin:$_\n$info \t $uri\n" ;
my $count = ;
my $date_key = "$date-$1" ;
if( exists $hash{$date_key} ){
$count = $hash{$date_key} + ;
}
$hash{$date_key} = $count;
}
}
}
#排序输出结果
#my @keys = sort { $hash{$b} <=> $hash{$a} or $b cmp $a } keys(%hash);
my @keys = sort keys(%hash);
my @vals = @hash{@keys}; foreach my $key (@keys)
{
print "$hash{$key} \t $key\n";
}
} sub read_file{
my $file = shift ;
parse_log($file);
} sub read_dir{
my $log_home = "/data2/log/202-log/mobiapi/1.0" ;
chdir $log_home or die "chdir error ?!" ;
my @files = <*> ;
for my $file (@files){
read_file($file);
}
} sub main
{
my $file = "/xxx/all.log" ;
print "———————————————$file———————————————————\n";
read_file($file);
} main();

最新文章

  1. monkey之monkey命令详解
  2. ORACLE回收站机制介绍
  3. macOS sierra 10.12 Cocoapods 私有库
  4. swift项目实战--微博的未登录界面的实现,和监听未登录界面两个按钮的两种实现方法
  5. AIX 配置网卡
  6. C语言与水仙花数
  7. android media server 解析1-media player service 结构部分
  8. aggregation(2):adaptive Boosting (AdaBoost)
  9. HDU 5903 - Square Distance [ DP ] ( BestCoder Round #87 1002 )
  10. jquery的隐藏
  11. Java 强引用 软引用 弱引用 虚引用详解
  12. Windows系统下文件的概念及c语言对其的基本操作(乙)
  13. 显示图像的SIFT flow描述子
  14. 虎牙直播弹幕转换字幕格式 基于Node.js 的 huya-danmu
  15. shell 其他杂项知识点笔记
  16. django - 总结 - cnblog 知识点
  17. druid + spring 事务 + removeAbandonedTimeout 超时回收导致的问题
  18. gitlab的备份与恢复与迁移
  19. 在CentOS上把MySQL从5.5升级到5.6(转)
  20. 32 取一个整数a从右端开始的4-7位

热门文章

  1. AS-->创建项目(慢)和打开项目(慢)等需要注意的问题
  2. Navicat标识为灰
  3. SQL语句 怎么把从一个表中查出来数据插入到另一个表中
  4. 安装 mysql-5.6.4-m7
  5. Python有关模块学习记录
  6. top高级技能
  7. windows下安装mysql5.6
  8. React学习笔记一:入门知识概览
  9. sqlserver 日志查看
  10. Valid Number 验证数字