Mojo 分析日志接口

#!/usr/bin/perl
#取文件行数
##循环开始清空文件
use POSIX;
use DBI;
my $dir  = '/data01/applog_backup';
my $file = "$ARGV[0]";
my $SDATE = strftime("%Y-%m-%d",localtime());
my $XDATE = strftime("%Y%m%d%H%M%S",localtime());
my $mon_file = "$dir/$file";
my $USER="$ARGV[1]";
my $IP="$ARGV[2]";
my $ENV="$ARGV[3]";

my $dbUser='DEVOPS';
my $user="root";
my $passwd="1234567";
my $dbh  = DBI->connect("dbi:mysql:database=$dbUser;host=192.168.32.161;port=3306",$user,$passwd) or die "can't connect to database ". DBI-errstr;
$dbh->do("SET NAMES utf8");   
open FILE,">tmp.out";
close FILE;
open( A, "<", "count.txt" );
            while (<A>) 
			{
            $count = $_;
            };
print "上次记录的记录数为$count\n";


open(my $fh, '<', "$mon_file");
$. = 0;
while (<$fh>) {
    ($num=$.) if eof;
              };
print "文件最新的记录数为$num"."\n";
    open( B, ">", "count.txt" );
    print B ("$num\n");

	
###获取增量记录
if ( $count  && $num != $count && $num !=0  )
{ 
     print "开始处理\n";
     open( C, "<", "$mon_file" ) || die "$!\n";
     while (<C>) 
	   {
             if  ($. > "$count" )
			 { 
              open( D, ">>", "tmp.out" );
              print D ("$_");
             }
        }
};
              close D;
##########监控关键字,以空格隔开################
my @warn_arr = qw/Exception Err/;
my @exp=qw/testscan HandleProxyTradeGroup/;

##$i 是匹配的次数,$b是最后一个匹配的行HandleProxyTradeGroup
foreach $a (@warn_arr)
{
               my  $i   = 0;
               my  $num = 0;
               my     $b = 0;
               open( D, "<", "tmp.out" ) || die "$!\n"; 
               while (<D>) 
                  {
                my @err_info=();
                             $num++;
                 if  (( $_ =~ /$a/i )  and   ($_ !~ /HandleProxyTradeGroup/))
                             {
                             $b = $num ;
                             print "\$b is $b\n";
                             open( E, "<", "tmp.out" ) || die "$!\n";
                             while (<E>) {
                            $_ =~ s/'//g;
                            if  (($. >= "$b") and  ($. <= "$b" + 5) ){push( @err_info, $_ ) };};
                             close E;
                             chomp @err_info;

                             print @err_info;
                             print "\n";
                             $dbh->do("INSERT INTO err_info(host_name,host_ip,v_date,info,env)  values('$USER','$IP','$XDATE','@err_info','$ENV')") or die($DBI::errstr);
                            
                            };
                   };
                            close D;
 };

转载于:https://www.cnblogs.com/zhaoyangjian724/p/6199843.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值