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


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#!/usr/bin/perl
use  Getopt::Std;
use  strict;
use  var s 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