脚本功能:

收集Tomcat异常日志并发送邮件,如果修改正则表达式,也可以用于收集其他日志文件的错误信息

运行环境:

Python2.7/2.4皆可运行

脚本使用方法:

可利用Crontab或者计划任务来指定时间运行,例如:
*/10 * * * * 脚本路径

脚本运行效果如下:

脚本内容如下:

下载脚本: tomcat_log_error_analysis.zip

#!/usr/bin/env python
# coding=utf-8#---------------------------------------------------------
# Name:         Tomcat错误日志发送邮件脚本
# Purpose:      收集Tomcat异常日志并发送邮件
# Version:      1.0
# Author:       LEO
# BLOG:         http://www.linux178.com
# EMAIL:        chanyipiaomiao@163.com
# Created:      2013-05-22
# Copyright:    (c) LEO 2013
# Python:       2.7/2.4  皆可使用
#--------------------------------------------------------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#定义主机 帐号 密码 收件人 邮件主题
smtpserver = 'smtp.163.com'
sender = '帐号/发件人'
password = '密码'
receiver = ('收件人1','收件人2',)
subject = u'Web服务器Tomcat日志错误信息'
From = u'xxx Web服务器'
To = u'服务器管理员'#定义tomcat日志文件位置
tomcat_log = 'D:\\Test\\catalina.out'#该文件是用于记录上次读取日志文件的位置,执行脚本的用户要有创建该文件的权限
last_position_logfile = 'D:\\Test\\last_position.txt'#匹配的错误信息关键字的正则表达式
pattern = compile(r'Exception|^\t+\bat\b',IGNORECASE)#发送邮件函数
def send_mail(error):#定义邮件的头部信息header = Header.Headermsg = MIMEText.MIMEText(error,'plain','utf-8')msg['From'] = header(From)msg['To'] = header(To)msg['Subject'] = header(subject+'\n')#连接SMTP服务器,然后发送信息smtp = SMTP(smtpserver)smtp.login(sender, password)smtp.sendmail(sender, receiver, msg.as_string())smtp.close()#读取上一次日志文件的读取位置
def get_last_position(file):try:data = open(file,'r')last_position = data.readline()if last_position:last_position = int(last_position)else:last_position = 0except:last_position = 0return last_position#写入本次日志文件的本次位置
def write_this_position(file,last_positon):try:data = open(file,'w')data.write(str(last_positon))data.write('\n' + "Don't Delete This File,It is Very important for Looking Tomcat Error Log !! \n")data.close()except:print "Can't Create File !" + fileexit()#分析文件找出异常的行
def analysis_log(file):error_list = []                                         #定义一个列表,用于存放错误信息.try:data = open(file,'r')except:exit()last_position = get_last_position(last_position_logfile) #得到上一次文件指针在日志文件中的位置this_postion = getsize(tomcat_log)                      #得到现在文件的大小,相当于得到了文件指针在末尾的位置if this_postion < last_position:                        #如果这次的位置 小于 上次的位置说明 日志文件轮换过了,那么就从头开始data.seek(0)elif this_postion == last_position:                     #如果这次的位置 等于 上次的位置 说明 还没有新的日志产生exit()elif this_postion > last_position:                      #如果是大于上一次的位置,就移动文件指针到上次的位置data.seek(last_position)for line in data:if pattern.search(line):error_list.append(line)write_this_position(last_position_logfile,data.tell())  #写入本次读取的位置data.close()return ''.join(error_list)                              #形成一个字符串#调用发送邮件函数发送邮件
error_info = analysis_log(tomcat_log)
if error_info:send_mail(error_info)

收集Tomcat异常日志并发送邮件相关推荐

  1. 带你了解zabbix整合ELK收集系统异常日志触发告警~

    今天来了解一下关于ELK的"L"-Logstash,没错,就是这个神奇小组件,我们都知道,它是ELK不可缺少的组件,完成了输入(input),过滤(fileter),output( ...

  2. android应用开发中收集的异常日志解决方法记录

    这里主要是列出开发中收集的一些错误日志,以及解决方案,仅供参考,也有待解决的问题 1, ListView 中出现java.lang.IndexOutOfBoundsException: Invalid ...

  3. asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程...

    最近在学习张善友老师的NanoFabric 框架的时了解到Exceptionless : https://exceptionless.com/ !因此学习了一下这个开源框架!下面对Exceptionl ...

  4. ELK之日志收集filebeat,并对nginx,tomcat access日志JSON格式化

    2019独角兽企业重金招聘Python工程师标准>>> 一:ELK日志收集器组件filebeat下载 官方下载地址:https://www.elastic.co/downloads/ ...

  5. 前端代码异常日志收集与监控

    在复杂的网络环境和浏览器环境下,自测.QA测试以及 Code Review 都是不够的,如果对页面稳定性和准确性要求较高,就必须有一套完善的代码异常监控体系,本文从前端代码异常监控的方法和问题着手,尽 ...

  6. ELK收集tomcat日志

    转载来源 :ELK收集tomcat日志 :https://www.jianshu.com/p/9f4ba87e4e15 1.安装tomcat 注意:需要提前安装好java环境 [root@db01 ~ ...

  7. Android 后台发送邮件 (收集应用异常信息+Demo代码)

    Android 后台发送邮件 (收集应用异常信息+Demo代码) 参考文章: (1)Android 后台发送邮件 (收集应用异常信息+Demo代码) (2)https://www.cnblogs.co ...

  8. tomact错误日志是那个_如何查看tomcat启动异常日志详情

    我的电脑同时使用两个jdk版本,默认1.7,eclipse使用的是1.8,,由于项目启动时有加载类需要jdk1.8的包,1.7不支持.所以导致项目在eclipse直接能够跑,而在外面的tomcat跑是 ...

  9. logstash收集tomcat日志

    目录 简介 JULI 组件的Handler与Formatter 修改tomcat控制台日志 修改tomcat访问access日志修改为json格式 修改tomcat其他日志 简介 Tomcat 的内部 ...

  10. tomcat accesslog日志扩展

    由于工作需要,最近对tomcat的日志进行了一些研究,发现其日志大致可以分为两类,一类是运行日志,即平常我们所说的catalina.out日志,由tomcat内部代码调用logger打印出来的:另一类 ...

最新文章

  1. Linux LVM逻辑卷配置过程详解
  2. Linux: grep命令
  3. 神经网络 | 过拟合以及 google神经网络小工具
  4. windows系统下的云服务器部署tomcat
  5. 我的世界python写游戏_快来试试Python写的游戏《我的世界》
  6. Codeforces Round #445 div.2 D. Restoration of string 乱搞
  7. html转义成velocity,改造Velocity模板引擎让$[!]{}输出默认进行html转义,并增加$#{}语法支持不转义输出...
  8. python创建字符串_Python基础之字符串
  9. MySQL数据库查询重复数据办法
  10. java基于springboot高校后勤报修管理系统
  11. 计算机网络毕业设计汇报ppt,计算机ppt毕业设计模板
  12. 计算机网络基础——CS架构与BS架构、OSI七层协议、tcp/ip五层模型讲解
  13. 我的世界服务器皮肤显示mod,【回归了】McMySkin Mod - Minecraft单机联机皮肤显示Mod...
  14. 生成好看的海底地形图
  15. Win10 固定IP地址方法
  16. GPU编程自学1 —— 引言
  17. 电脑需要安装安全管家吗?火绒安全值不值得推荐?
  18. 电脑故障3000实例排查大全! 计算机报错大全
  19. 高阶Day1:面向对象,面向过程,类和对象的属性和方法创建
  20. 关于orientation

热门文章

  1. 阶段3 1.Mybatis_03.自定义Mybatis框架_6.自定义Mybatis的编码-实现基于XML的查询所有操作...
  2. python购物车进阶(函数)
  3. 微服务2.0时代,论其痛点与触点
  4. nltk——文本分类
  5. VM虚拟机,Linux系统安装tools过程遇到 what is the location of the “ifconfig” program
  6. Visual Studio2017 数据库架构比较
  7. 前端软件sublime的一些常用快捷键
  8. javascript自定义滚动条插件,几行代码的事儿
  9. Android -- Layout布局文件里的android:layout_height等属性为什么会不起作用?
  10. 809*??=800*??+9*??+1 其中??代表的两位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果。...