本文是通过脚本过滤tomcat日志的一些信息;比如,一天访问的全部url的数次,某些url的次数,平均延迟,及时间段;并记录到当天的xlsx文件;大拿勿笑;


#!/usr/bin/perl
use Getopt::Std;
use strict;
use vars qw($opt_a $opt_i $opt_y $opt_h $opt_m $opt_s $opt_u $opt_t $opt_p);
getopts('a:i:y:h:m:s:u:t:p:');
my ($app_name,$log_ip,$log_year,$log_hour,$log_minute,$log_second,$log_url,$log_time,$log_path);
my ($output_all_number,$output_app_url,$output_app_interval,$output_all_average);
my $data=`date +%Y-%m-%d`;
chomp($data);
my $data_file="${data}.xlsx";
&main();
sub main {
        get_args();
}
sub get_args {
    $app_name = $opt_a if $opt_a;
    $log_ip = $opt_i if $opt_i;
    $log_year = $opt_y if $opt_y;
    $log_hour = $opt_h if $opt_h;
    $log_minute = $opt_m if $opt_m;
    $log_second = $opt_s if $opt_s;
    $log_url = $opt_u if $opt_u;
    $log_time = $opt_t if $opt_t;
        $log_path = $opt_p if $opt_p;
        &Usage() if (!defined ($app_name) || !defined ($log_path));
}
if ($log_url) {
$output_all_number=`cat $log_path |grep $log_url|wc -l`;
}else {
$output_all_number=`cat $log_path |wc -l`;
}
if ($log_url ) {
$output_all_average=`cat $log_path |grep $log_url |awk \'{i += \$NF}END{print i/NR}\'`;
}else {
$output_all_average=`cat $log_path |awk \'{i += \$NF}END{print i/NR}\'`;
}
if ($log_time) {
$output_app_interval=`cat $log_path |grep $log_url |awk -F \'[ :]\' \'{if (\$5 == $log_time) print \$0}\'|awk \'{i += \$NF}END{print i/NR}\'`;
}
chomp ($output_all_number,$output_app_interval,$output_all_average);
if ($log_url && $log_time) {
system ("echo \"${app_name}\turl\tnumber\taverage\tinterval\" > \"$data_file\"");
system ("echo \"\t$log_url\t$output_all_number\t$output_app_interval\t$log_time\" >> \"$data_file\"");
}elsif ($log_url) {
system ("echo \"$app_name\turl\tnumber\taverage\" > \"$data_file\"");
system ("echo \"\t$log_url\t$output_all_number\t$output_all_average\" >> \"$data_file\"");
}else{
system ("echo \"$app_name\tnumber\taverage\" > \"$data_file\"");
system ("echo \"\t$output_all_number\t$output_all_average\" >> \"$data_file\"");
}
sub Usage {
        print << "END";
        ./weblog_grep.pl -a <app_name> -p <log_path> -u <log_filter> -i <ip> -t <YY-mm-dd eg:161011>
                                              
END
exit 2;
}

实例1、全部日志

140136575.jpg

实例2、url:/simple的相关日志

140221806.jpg

实例3、url:/simple的16点中的日志

140336840.jpg