标签:date bug 输入 开始 格式 用户 return get bre
用户的一个需求
catalina.out的日志中,先找到第一个关键字,然后向上查找第二个关键字,写个小脚本
1 #!/usr/bin/python 2 3 import datetime, time 4 import re 5 import os 6 7 #取得文件名,文件名的时间格式是收到报警的时间减去一小时 8 def get_filename(input_str): 9 #如果有输入,整理格式后减去一小时 10 if input_str: 11 t=datetime.datetime.strptime(input_str, "%Y%m%d%H") + datetime.timedelta(hours=-1) 12 #如果无输入,则默认为现在时间再减去一小时 13 else: 14 t=datetime.datetime.now() + datetime.timedelta(hours=-1) 15 #组合成文件名 16 f_name="/app/tomcat/logs/catalina."+t.strftime("%Y-%m-%d-%H")+".out" 17 return f_name 18 19 #取得第一个关键字的行数 20 def get_line(f_name): 21 with open(f_name, ‘r‘) as fread: 22 lines = fread.readlines() 23 i=0 24 l_num=[] 25 for line in lines: 26 #第一个关键字 27 keyword1="Could not connect to SMTP host" 28 rs1 = re.search(keyword1, line) 29 i+=1 30 if rs1: 31 #第一个关键字的行号 32 l_num.append(i) 33 return l_num 34 35 #根据第一个关键字的行数向上查找到第二个关键字 36 def get_log(f_name, num): 37 with open(f_name, ‘r‘) as fread: 38 #把文件倒过来,从第一个关键字所在的行开始查找 39 rlines = fread.readlines()[::-1] 40 j=0 41 rs_str=[] 42 for j in range(len(rlines)-num,len(rlines)): 43 #第二个关键字的正则表达式 44 keyword2="U000\d{4},.*@.*,.\d{2}" 45 rs2 = re.search(keyword2, rlines[j]) 46 j+=1 47 if rs2: 48 #第二个关键字的内容,J由于上面+1了,所以要-1 49 rs_str.append(rlines[j-1]) 50 break 51 return rs_str 52 53 def main(): 54 #打印说明文字 55 print "Please input alerttime, YYYYMMDDHH exp:2017010113" 56 print "Enter for default (now)" 57 #要求输入 58 input_str = raw_input("input: ") 59 #取得文件名 60 f_name = get_filename(input_str) 61 #判断文件是否存在 62 if os.path.isfile(f_name): 63 l_num = get_line(f_name) 64 if l_num: 65 for num in l_num: 66 rs_str=get_log(f_name, num) 67 if rs_str: 68 #找到日志时的输出 69 print "-----------------" 70 print rs_str[0] 71 print "javax.mail.MessagingException: Could not connect to SMTP host: smtp.partner.outlook.cn, port: 587;" 72 print "-----------------" 73 #未找到相关日志时的输出 74 else: 75 print "-----------------" 76 print "No Log Found" 77 print "-----------------" 78 #文件不存在时的输出 79 else: 80 print "-----------------" 81 print "File not exist, please check again" 82 print "-----------------" 83 84 if __name__ == ‘__main__‘: 85 main()
输出为
[root@test logs]# ./findlog.py Please input alerttime, YYYYMMDDHH exp:2017010113 Enter for default (now) input: 2017083116 ----------------- 2017-08-31 15:00:16,070 DEBUG [java.sql.ResultSet] - {rset-187333} Result: [U0000448, test-test1@test.com, ??Buyer, 00] javax.mail.MessagingException: Could not connect to SMTP host: smtp.partner.outlook.cn, port: 587; ----------------- ----------------- 2017-08-31 15:38:15,980 DEBUG [java.sql.ResultSet] - {rset-187333} Result: [U0000449, test-test2@test.com, ??Buyer, 00] javax.mail.MessagingException: Could not connect to SMTP host: smtp.partner.outlook.cn, port: 587; -----------------
标签:date bug 输入 开始 格式 用户 return get bre
原文地址:http://www.cnblogs.com/justbio/p/7477904.html