首页 > 编程语言 > 详细

python 合并当天tomcat异常日志 第二版

时间:2017-04-14 10:42:15      阅读:217      评论:0      收藏:0      [点我收藏+]

把找出的异常文件,归类到指定目录

# !/usr/bin/env python
# coding:utf-8
import os,sys,tempfile,time,datetime,re
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
now = datetime.datetime.now()
strdatetime1 = now.strftime("%Y%m%d")
strdatetime = now.strftime("%Y/%m/%d")
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‘
Date=now.strftime("%d")
error_list_logfile = error_list_logfile1 + strdatetime1 + ".txt"
print error_list_logfile
errorfile=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 make_ex(errorfile):
    with open(errorfile) as f:
        exfile = []
        exdict = {}
        for i in f.readlines():
            expname = i.strip().split(‘/‘)[3]
            exname = i.strip().split(‘/‘)[8]
            # if expname not in exfile:
            #     exfile.append(exname)
            estr = i.strip()
            #print estr
            youpattern = re.compile(‘/(\w+)/(\w+)/(\w+)‘)
            result = youpattern.match(estr)
            r1 = result.group()
            r2 = "ex/" + strdatetime1
            r3 = exname
            rall = [r1, r2, r3]
            # exdict[r1]
            rexall = "/".join(rall) + ‘/‘
            #print rexall
            if not os.path.exists(rexall):
                os.makedirs(rexall)
            os.system(‘cp -r %s %s‘ % (estr, rexall))


def make_diff_ex(c):
    for j in c:
        i=str(j)
        expname = i.strip().split(‘/‘)[3]
        exname = i.strip().split(‘/‘)[8]
        # if expname not in exfile:
        #     exfile.append(exname)
        estr = i.strip()
        #print estr
        youpattern = re.compile(‘/(\w+)/(\w+)/(\w+)‘)
        result = youpattern.match(estr)
        if result:
            r1 = result.group()
            r2 = "ex/" + strdatetime1
            r3 = exname
            rall = [r1, r2, r3]
            # exdict[r1]
            rexall = "/".join(rall) + ‘/‘
            #print rexall
            if not os.path.exists(rexall):
                os.makedirs(rexall)
            os.system(‘cp -r %s %s‘ % (estr, rexall))
        





‘‘‘
def temps(errorfile):
    tmpfile = tempfile.NamedTemporaryFile(delete=False)
    with open(errorfile,‘rw‘) as f:
        readfile="\n".join(f.readlines)
        tmpfile.write(str(f.readlines()))
        return tmpfile
‘‘‘
def temps(errorfile):
    tmpfile=[]
    with open(errorfile,‘rw‘) as f:
        tmpfile.append(f.readlines())
        return tmpfile



def list_diff(a, b):
    ret = []
    for i in a:
        if i not in b:
            ret.append(i)
    return ret

if __name__ == ‘__main__‘:
    if not os.path.exists(errorfile):
        fp = open(error_list_logfile, "w+")
        tomcat_last_dir = walk_dir(tomcat_log)
        for i in tomcat_last_dir:
            walk(i)
        make_ex(errorfile)
    else:
        a=temps(errorfile)
        fp = open(error_list_logfile, "w+")
        tomcat_last_dir = walk_dir(tomcat_log)
        for i in tomcat_last_dir:
            walk(i)
        tmpfiles = []
        b=temps(errorfile)
        c=list_diff(a,b)
        if c:
            make_diff_ex(c)

本来想用tempfile模块的,还要研究下。

本文出自 “python 运维” 博客,谢绝转载!

python 合并当天tomcat异常日志 第二版

原文:http://szgb17.blog.51cto.com/340201/1915646

(0)
(1)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!