thinkphp日志分析

#!/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{4}-\d{2}-\d{2})T(.+) \] (.+) \| (.+) \[ (.+) \]/ ){
            my $date = $1 ;
            my $time = $2 ;
            my $uri = $3 ;
            my $info = $4 ;
            my $runtime = $5 ;
            
            #下面解析 /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 = 1 ;
                my $date_key = "$date-$1" ; 
                if( exists $hash{$date_key} ){
                    $count = $hash{$date_key} + 1 ;
                }
                $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();

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值