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
if  len (sys.argv)  = =  3  and  sys.argv[ 2 in  accepted_modes:
     java_name  =  sys.argv[ 1 ]
     mode  =  sys.argv[ 2 ]
else :
     usage()
   
   
#Check if process is running / Get PID
jproc  =  Jprocess(java_name) 
pid  =  jproc.chk_proc()
   
   
if  pid ! =  ""  and   mode  = =  'all' :
    jproc.get_jstats()
   # print jproc.zdict
    jproc.compute_jstats()               
    FNULL  =  open (os.devnull,  'w' )
    for  key  in  jproc.zdict:
        #print key,jproc.zdict[key]
        jproc.send_to_zabbix(key)
    FNULL.close()
    print  pid
   
else :
    print  0
  1. 生成日期格式 比如error_list20170104.txt

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
# !/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  in  tomcat_last_dir:
             walk(i)

2.带参数的写法,比如python test.py 20170103,这样生成error_list20170103.txt

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
# !/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[ 1 ]
     if  not  argv1:
         tomcat_last_dir = walk_dir(tomcat_log)
         for  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  in  tomcat_last_dir:
             walk(i)

参数和变量的位置,还需要优化处理。




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

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
9月前
|
缓存 Java 应用服务中间件
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
本文详解Spring Boot十大核心配置优化技巧,涵盖Tomcat连接池、数据库连接池、Jackson时区、日志管理、缓存策略、异步线程池等关键配置,结合代码示例与通俗解释,助你轻松掌握高并发场景下的性能调优方法,适用于实际项目落地。
1680 5
|
运维 监控 安全
Syslog 日志分析与异常检测技巧
系统日志蕴含设备运行关键信息,但分析提取颇具挑战。本文详解从命令行工具(如 Grep、Tail、Awk)到专业软件(如 EventLog Analyzer)的全流程日志分析技巧,助你高效挖掘 Syslog 价值,提升运维与安全响应能力。
720 4
|
Java 应用服务中间件 Linux
Tomcat运行日志字符错乱/项目启动时控制台日志乱码问题
总结: 通过以上几种方法,概括如下:指定编码格式、设置JVM的文件编码、修改控制台输出编码、修正JSP页面编码和设置过滤器。遵循这些步骤,你可以依次排查和解决Tomcat运行日志字符错乱及项目启动时控制台日志乱码问题。希望这些建议能对你的问题提供有效的解决方案。
2290 16
|
监控 Java 应用服务中间件
Tomcat log日志解析
理解和解析Tomcat日志文件对于诊断和解决Web应用中的问题至关重要。通过分析 `catalina.out`、`localhost.log`、`localhost_access_log.*.txt`、`manager.log`和 `host-manager.log`等日志文件,可以快速定位和解决问题,确保Tomcat服务器的稳定运行。掌握这些日志解析技巧,可以显著提高运维和开发效率。
1743 13
|
SQL druid Oracle
【YashanDB知识库】yasdb jdbc驱动集成druid连接池,业务(java)日志中有token IDENTIFIER start异常
客户Java日志中出现异常,影响Druid的merge SQL功能(将SQL字面量替换为绑定变量以统计性能),但不影响正常业务流程。原因是Druid在merge SQL时传入null作为dbType,导致无法解析递归查询中的`start`关键字。
|
测试技术 开发工具 git
写了BUG还想跑——闲鱼异常日志问题自动追踪-定位-分发机制
为了高效地发现、定位和解决预发问题,闲鱼团队研发了一套异常日志问题自动追踪-定位-分发机制。这套机制通过自动化手段,实现了异常日志的定时扫描、精准定位和自动分发,显著降低了开发和测试的成本,提高了问题解决的效率。
702 15
写了BUG还想跑——闲鱼异常日志问题自动追踪-定位-分发机制
|
人工智能 Oracle Java
解决 Java 打印日志吞异常堆栈的问题
前几天有同学找我查一个空指针问题,Java 打印日志时,异常堆栈信息被吞了,导致定位不到出问题的地方。
508 2
日志框架log4j打印异常堆栈信息携带traceId,方便接口异常排查
日常项目运行日志,异常栈打印是不带traceId,导致排查问题查找异常栈很麻烦。
|
JSON 缓存 fastjson
一行日志引发的系统异常
本文记录了一行日志引发的系统异常以及作者解决问题的思路。
364 11
|
Java 应用服务中间件 HSF
Java应用结构规范问题之AllLoggers接口获取异常日志的Logger实例的问题如何解决
Java应用结构规范问题之AllLoggers接口获取异常日志的Logger实例的问题如何解决
217 3

推荐镜像

更多