本文是通过脚本过滤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、全部日志
实例2、url:/simple的相关日志
实例3、url:/simple的16点中的日志