设为首页 收藏本站
查看: 1009|回复: 0

[经验分享] python 合并当天tomcat异常日志 第二版

[复制链接]

尚未签到

发表于 2018-12-7 09:58:33 | 显示全部楼层 |阅读模式
  把找出的异常文件,归类到指定目录
# !/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,'r') 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模块的,还要研究下。




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-644246-1-1.html 上篇帖子: Myeclipse 启动 Tomcat 出现 class file editor 下篇帖子: 一台服务器承载两个tomcat服务
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表