sunsir 发表于 2018-12-7 10:11:58

python 合并当天tomcat异常日志 使用正则过滤

  写的一般,将就看。
  参数的写法

if len(sys.argv) == 3 and sys.argv in accepted_modes:
    java_name = sys.argv
    mode = sys.argv
else:
    usage()

#Check if process is running / Get PID
jproc = Jprocess(java_name)
pid = jproc.chk_proc()

if pid != "" andmode == 'all':
   jproc.get_jstats()
# print jproc.zdict
   jproc.compute_jstats()               
   FNULL = open(os.devnull, 'w')
   for key in jproc.zdict:
       #print key,jproc.zdict
       jproc.send_to_zabbix(key)
   FNULL.close()
   print pid
else:
   print 0
[*]  生成日期格式 比如error_list20170104.txt
# !/usr/bin/env python
#-*-coding:utf-8-*-
import os
import sys
import time
import datetime
import string
from smtplib import SMTP
from email import MIMEText
from email import Header
from os.path import getsize
from sys import exit
from re import compile, IGNORECASE
tomcat_log = '/home/logs/'
last_position_logfile = '/home/back/test/last_position.txt'
#error_list_logfile = '/home/back/test/error_list.txt'
error_list_logfile1 = '/home/back/test/error_list'
now = datetime.datetime.now()
strdatetime = now.strftime("%Y/%m/%d")
strdatetime1 = now.strftime("%Y%m%d")
Date=now.strftime("%d")
error_list_logfile = error_list_logfile1 + strdatetime1 + ".txt"
print error_list_logfile
pattern = compile(r'Exception|^\t+\bat\b', IGNORECASE)
fp = open(error_list_logfile, "w+")
def writeToTxt(list_name, file_path):
    try:
      fp = open(file_path, "a+")
      for item in list_name:
            fp.write(str(item) + "\n")
      fp.close()
    except IOError:
      print("fail to open file")

# 分析文件找出异常的行
def analysis_log(file):
#parent_file = os.path.dirname(file)
error_list = []
try:
data = open(file, 'r')
except:
exit()
for line in data:
if pattern.search(line):
error_list.append(file)
                        #print error_list
                        #errors_list += 1
                        #print "%s" %file
                        break
      data.close()
      if len(error_list)==1:
            #return ''.join(error_list)
            writeToTxt(error_list,error_list_logfile)
      #return error_list
      #if errors_list == 1:
            #print "%s num is %d" %(file,errors_list)
#print ''.join(errors_list)
def walk(local_dir):
for root, dirs, files in os.walk(local_dir):
for filespath in files:
# return filespath
local_file = os.path.join(root, filespath)
# print error_info2
error_info = analysis_log(local_file)
def walk_dir(home_dir):
homedir=[]
      for root, dirs, files in os.walk(home_dir):
            for dirname in dirs:
                        local_dir = os.path.join(root, dirname)
                        #print "Date is %s" %Date
                        result = string.find(local_dir,strdatetime)!=-1
                        if result:
                            #print local_dir.count('/')
                            if local_dir.count('/')==8:
                              homedir.append(local_dir)
    return homedir
if __name__ == '__main__':
    if not argv1:
      tomcat_last_dir=walk_dir(tomcat_log)
      for i in tomcat_last_dir:
      walk(i)  2.带参数的写法,比如python test.py 20170103,这样生成error_list20170103.txt
# !/usr/bin/env python
#-*-coding:utf-8-*-
import os
import sys
import time
import datetime
import string
from smtplib import SMTP
from email import MIMEText
from email import Header
from os.path import getsize
from sys import exit
from re import compile, IGNORECASE
tomcat_log = '/home/logs/'
last_position_logfile = '/home/back/test/last_position.txt'
#error_list_logfile = '/home/back/test/error_list.txt'
error_list_logfile1 = '/home/back/test/error_list'
now = datetime.datetime.now()
strdatetime = now.strftime("%Y/%m/%d")
strdatetime1 = now.strftime("%Y%m%d")
Date=now.strftime("%d")
error_list_logfile = error_list_logfile1 + strdatetime1 + ".txt"
print error_list_logfile
pattern = compile(r'Exception|^\t+\bat\b', IGNORECASE)
fp = open(error_list_logfile, "w+")
def writeToTxt(list_name, file_path):
    try:
      fp = open(file_path, "a+")
      for item in list_name:
            fp.write(str(item) + "\n")
      fp.close()
    except IOError:
      print("fail to open file")

# 分析文件找出异常的行
def analysis_log(file):
#parent_file = os.path.dirname(file)
error_list = []
try:
data = open(file, 'r')
except:
exit()
for line in data:
if pattern.search(line):
error_list.append(file)
                        #print error_list
                        #errors_list += 1
                        #print "%s" %file
                        break
      data.close()
      if len(error_list)==1:
            #return ''.join(error_list)
            writeToTxt(error_list,error_list_logfile)
      #return error_list
      #if errors_list == 1:
            #print "%s num is %d" %(file,errors_list)
#print ''.join(errors_list)
def walk(local_dir):
for root, dirs, files in os.walk(local_dir):
for filespath in files:
# return filespath
local_file = os.path.join(root, filespath)
# print error_info2
error_info = analysis_log(local_file)
def walk_dir(home_dir):
homedir=[]
      for root, dirs, files in os.walk(home_dir):
            for dirname in dirs:
                        local_dir = os.path.join(root, dirname)
                        #print "Date is %s" %Date
                        result = string.find(local_dir,strdatetime)!=-1
                        if result:
                            #print local_dir.count('/')
                            if local_dir.count('/')==8:
                              homedir.append(local_dir)
      return homedir
def walk_dir_argv(home_dir,strdatetime):
    homedir=[]
    for root, dirs, files in os.walk(home_dir):
      for dirname in dirs:
                  local_dir = os.path.join(root, dirname)
                  #print "Date is %s" %Date
                  result = string.find(local_dir,strdatetime)!=-1
                  if result:
                        #print local_dir.count('/')
                        if local_dir.count('/')==8:
                            homedir.append(local_dir)
    return homedir
if __name__ == '__main__':
    argv1=sys.argv
    if not argv1:
      tomcat_last_dir=walk_dir(tomcat_log)
      for i in tomcat_last_dir:
      walk(i)
    else:
      error_list_logfile = error_list_logfile1 + argv1 + ".txt"
      tomcat_last_dir=walk_dir_argv(tomcat_log,strdatetime)
      for i in tomcat_last_dir:
            walk(i)  参数和变量的位置,还需要优化处理。



页: [1]
查看完整版本: python 合并当天tomcat异常日志 使用正则过滤