开发者社区> 技术小阿哥> 正文

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,如需转载请自行联系原作者

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

相关文章
Tomcat, MySQL和Python(1)
Tomcat, MySQL和Python(1)
36 0
Tomcat, MySQL和Python(2)
Tomcat, MySQL和Python(2)
38 0
idea tomcat 日志 中文 乱码【已解决】
idea tomcat 日志 中文 乱码【已解决】
63 0
idea控制台乱码(tomcat日志乱码)的解决办法
idea控制台乱码(tomcat日志乱码)的解决办法
794 0
Tomcat日志实现每天切割(通过Cronolog实现日志分割)
Tomcat日志,如果不做切割处理,会导致日志输出会越来越大,不方便后续的问题追踪。 所以我们对日志文件进行按天进行分割。
374 0
Tomcat配置访问日志和线程数
Tomcat配置访问日志和线程数
135 0
启动 Tomcat 日志乱码问题
大家在Windows 启动 Tomcat 应该都会遇到中文乱码,其实也不影响使用,但是笔者看着这个乱码难受,于是提供两种较简单的解决方案。
503 0
cronolog切割tomcat的catalina.out日志
cronolog切割tomcat的catalina.out日志
210 0
Tomcat的访问日志-localhost_access_log和记录Post请求参数
Tomcat的访问日志-localhost_access_log和记录Post请求参数
1190 0
认识Tomcat的日志:catalina.out、localhost、manager、localhost_access_log
认识Tomcat的日志:catalina.out、localhost、manager、localhost_access_log
459 0
+关注
技术小阿哥
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
双剑合璧-Python和大数据计算平台的结合
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
相关实验场景
更多