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

写的一般,将就看。

参数的写法

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

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

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

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

时间: 2024-11-08 18:29:12

python 合并当天tomcat异常日志 第三版的相关文章

ELK之三-----JAVA日志多行合并、tomcat json日志收集与处理

实战一:通过Logstash收集tomcat服务器的日志 1.配置JDK环境 1.解压JDK包,创建软链接 [[email protected] src]# tar xvf jdk-8u212-linux-x64.tar.gz [[email protected] src]# ln -sv /usr/local/src/jdk1.8.0_212/ /usr/local/jdk ‘/usr/local/jdk/jdk1.8.0_212’ -> ‘/usr/local/src/jdk1.8.0_21

Tomcat容器日志收集方案fluentd+elasticsearch+kilbana

在上一遍博文中我们介绍了Nginx容器访问日志收集的方案,我们使用EFK的架构来完成对容器日志内应用日志的收集,如果不知道什么是EFK架构,那么请访问以下链接获取相关的帮助 Nginx容器日志收集方案fluentd+elasticsearch+kilbana 如果你已经认真阅读了上面的链接,并撑握了其用法,那么再来看本博文(针对于初学者),下面假设我们已经搭建好了上一讲所需要的基础环境,我们接下来就直接开始步入正题. 在步入正题之前我们首先需要确认我们需要完成的目标与效果,同样我们在启动Tomc

tomcat 访问日志源码分析与应用

tomcat 日志可以分为两类: 1.访问日志,记录访问的时间.来源.资料等相关信息(ServletRequest 可以获取的信息,都可以记录): 2.运行日志,记录tomcat 运行.异常.错误信息. tomcat 的日志记录常会被 log4j 或 slf4j 取代,不过这里不讨论另外日志组件,很纯粹地说一下tomcat 原生的访问日志.关于运行日志的分析,有机会再另写一篇.对于访问日志,tomcat 定义了以下接口: public interface AccessLog { // 记录访问日

配置Tomcat的日志系统

成功配置tomcat的log4j日志系统,格式:HTML+每天以yyyy-mm-dd.log命名的日志文件 一.引言: 实习单位让用log4j配置webapp的日志系统,要求产生的日志文件是html格式,而且是每天以yyyy-mm-dd日期格式命名的日志文件. 这个以前让自己费神了一段时间,近期花了两天时间总算配置成功了!只是配置成功的是tomcat的,不是单个webapp的,现把步骤记录下来,晚上再配置webapp的.先写一步一步的操作,后面再解说一些log4j的关键知识点. 二.一步一步配置

Python 全栈开发八 日志模块

日志是一种可以追踪某些软件运行时所发生事件的方法.软件开发人员可以向他们的代码中调用日志记录相关的方法来表明发生了某些事情.一个事件可以用一个可包含可选变量数据的消息来描述.此外,事件也有重要性的概念,这个重要性也可以被称为严重性级别(level). 1.日志的作用 通过log的分析,可以方便用户了解系统或软件.应用的运行情况:如果你的应用log足够丰富,也可以分析以往用户的操作行为.类型喜好.地域分布或其他更多信息:如果一个应用的log同时也分了多个级别,那么可以很轻易地分析得到该应用的健康状

马哥2016全新Linux+Python高端运维班第三周作业作答

                    马哥2016全新Linux+Python高端运维班第三周作业                                           1.列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可.     [[email protected] ~]# who | awk '{print $1 $NF}'| uniq -d     [[email protected] ~]# who     yicx     :0  

angular代码设计之异常日志设计

angular代码分析之异常日志设计 错误异常是面向对象开发中的记录提示程序执行问题的一种重要机制,在程序执行发生问题的条件下,异常会在中断程序执行,同时会沿着代码的执行路径一步一步的向上抛出异常,最终会由顶层抛出异常信息.而与异常同时出现的往往是日志,而日志往往需要记录具体发生异常的模块.编码.详细的错误信息.执行堆栈等,方便问题的快速定位分析.angularjs作为前端的框架,其对异常信息的处理是怎样的呢? 一.定义模块和异常类型 首先每个模块的日志模块编码是一样的,只需要本模块负责初始化一

ASP.NET全局错误处理和异常日志记录以及IIS配置自定义错误页面

应用场景和使用目的 很多时候,我们在访问页面的时候,由于程序异常.系统崩溃会导致出现黄页.在通常的情况下,黄页对于我们来说,帮助是极大的,因为它可以帮助我们知道问题根源,甚至是哪一行代码出现了错误.但这对于用户是非常可怕的,因为用户不知道发生了什么,也无法了解黄页给出的内容.甚至,如果我们遇到一些不友好的人,他们会拿这些内容大做文章,对我们网站产生威胁. 那我们如何在程序异常.系统崩溃时,不会出现黄页,并且还可以给出一些更加友好的提示呢?甚至在我们需要的时候,可以收集这些异常信息,并加以分析,能

[转载]针对IIS7以上的ASP.NET网站自定义错误页面与异常日志总结

针对IIS7以上的ASP.NET网站自定义错误页面与异常日志总结 汪宇杰 2014-1-11 星期六 02:31 455 Reads 1 Comments 自定义错误页面和异常记录是个很古老的话题了,但依旧可以让人爆到现在.在我做了无数次试验并总结经验和原则后,写下本文,已警后人. 本文的范围和限制 本文仅仅适用于部署在IIS7或以上版本中的ASP.NET 4.0集成模式应用程序.IIS7以上的意思是Windows Server 2008以上服务器适用.我已在WS2012R2,IIS8上测过.