本文是通过脚本过滤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、全部日志
实例2、url:/simple的相关日志
实例3、url:/simple的16点中的日志
本文转自 西索oO 51CTO博客,原文链接:http://blog.51cto.com/lansgg/1307325