开发者社区> 技术小阿哥> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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

简介:
+关注继续查看

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
# !/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 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 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 in a:
        if 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 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 in tomcat_last_dir:
            walk(i)
        #tmpfiles = []
        b=temps(errorfile)
        c=list_diff(a,b)
        if c:
            make_diff_ex(c)

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




本文转自 liqius 51CTO博客,原文链接:http://blog.51cto.com/szgb17/1915646,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Python 异常值处理 箱线图、3σ原则 (机器学习)
Python 异常值处理 箱线图、3σ原则 (机器学习)
0 0
【python小脚本】监听日志文件异常数据发送告警短信
老项目中有个用脚本启动的服务,很重要,用来做业务留痕的,涉及业务客户经常性投诉,是找第三方做的,时间长了维护需要花钱,老出各种未知bug,没办法处理所以机器上配了定时任务,定期的几天重启一次来解决。 但是有时候不知道什么原因,重启脚本运行,服务没起来,crond 也没有什么调度机制。 希望写个脚本做监控,当发现服务没起来,发送告警信息,或者重启服务。
0 0
Python异常传播
Python异常传播自制脑图 一个出现在全局,一个出现在函数就两种可能 当在函数中出现异常时,如果在函数中对异常进行了处理,则异常不会再继续传播, 如果函数中没有对异常进行处理,则异常会继续向函数调用处传播, 如果函数调用处处理了异常,则不再传播,如果没有处理则继续向调用处传播 直到传递到全局作用域(主模块)如果依然没有处理,则程序终止,并且显示异常信息
0 0
Python异常对象
Python异常对象自制脑图 介绍了如何捕获异常对象,捕获异常对象演示,try 语句。
0 0
Python收集异常日志并发送邮件
Python收集异常日志并发送邮件
0 0
Python Django开发 异常及解决办法(一)
该错误表明views.py中没有return一个返回值给前端。
0 0
【Python基础之函数:异常相关和生成器对象、yield用法、生成器表达式】
【Python基础之函数:异常相关和生成器对象、yield用法、生成器表达式】
0 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
给运维工程师的Python实战课
立即下载
Python 脚本速查手册
立即下载
ACE 区域技术发展峰会:Flink Python Table API入门及实践
立即下载