1. # qianxiao996精心制作
  2. #博客地址:https://blog.csdn.net/qq_36374896
  3. #!/usr/bin/python
  4. #-*- coding: utf-8 -*
  5. import time,os,smtplib,socket,threading
  6. from email.mime.multipart import MIMEMultipart
  7. from email.mime.text import MIMEText
  8. from email.mime.application import MIMEApplication
  9. #发送邮件
  10. def sendemail(email,data,name):
  11. print(data)
  12. mail_host = "smtp.qq.com" # 设置服务器
  13. mail_user = "qianxiao996@126.com" # 用户名
  14. mail_pass = "qneiaxxxxdgjj" # 口令
  15. emaillist = mail_user.split('@')
  16. senddata = '错误信息如下:'+"\n\n"+data+"\n"+"此条信息由系统自动发送!如有错误,敬请谅解!"
  17. me = emaillist[0] + "<" + mail_user +">" # 这里的hello可以任意设置,收到信后,将按照设置显示
  18. msg = MIMEMultipart()
  19. msg['Subject'] = name # 设置主题
  20. msg['From'] = me # 发送者
  21. msg['To'] = ";".join(email) # 接收者
  22. # ---邮件正文---
  23. part = MIMEText(senddata, _charset='utf-8') # 将错误文件内容做为邮件正文内容
  24. msg.attach(part)
  25. try:
  26. s = smtplib.SMTP()
  27. s.connect(mail_host) # 连接smtp服务器
  28. s.login(mail_user, mail_pass) # 登陆服务器
  29. s.sendmail(me, email, msg.as_string()) # 发送邮件
  30. s.close()
  31. return True
  32. except Exception as e:
  33. print(str(e).encode('gb2312').decode('utf-8'))
  34. return False
  35. #检查日志文件
  36. def checklog(accept_email,filepath,name):
  37. file = open(filepath, 'r', encoding='utf-8')
  38. file.seek(0, os.SEEK_END) #文件的相对结束位置
  39. error_list=""
  40. ip = get_ip()
  41. host = '通知:'+'主机 '+ip+' 的 '+name+' 服务出现错误!'
  42. #print(host)
  43. while True:
  44. where = file.tell() #返回文件的当前位置。
  45. line = file.readline()
  46. if not line:
  47. time.sleep(1)
  48. file.seek(where)
  49. if error_list != "":
  50. sendemail(accept_email, error_list,host)
  51. error_list=""
  52. else:
  53. error_list+=line+'\n'
  54. if len(error_list)>10000:
  55. sendemail(accept_email,error_list,host)
  56. error_list = ""
  57. #得到IP
  58. def get_ip():
  59. s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  60. s.connect(("8.8.8.8", 80))
  61. ip = s.getsockname()[0]
  62. s.close()
  63. return ip
  64. if __name__ == '__main__':
  65. accept_email = ['qianxiao996@126.com']
  66. middleware_name='Apache 2.4'
  67. middleware_path = r"C:\phpStudy\PHPTutorial\nginx\logs\error.log"
  68. php_name = 'PHP 2.7'
  69. php_path = 'C:\phpStudy\PHPTutorial\php\php\php_error.log'
  70. #中间件
  71. middleware= threading.Thread(target=checklog, args=(accept_email,middleware_path,middleware_name))
  72. #php
  73. php= threading.Thread(target=checklog, args=(accept_email,php_path,php_name))
  74. middleware.start()
  75. php.start()

python Apache和php错误日志邮件报警的更多相关文章

  1. 监测mysql错误日志,有错误自动邮件报警

    监测mysql错误日志,有错误自动邮件报警 http://blog.csdn.net/yabingshi_tech/article/details/51443401 MySQL:监控慢日志.错误日志. ...

  2. Python遍历目录下所有文件的最后一行进行判断若错误及时邮件报警-案例

    遍历目录下所有文件的最后一行进行判断若错误及时邮件报警-案例: #-*- encoding: utf-8 -*- __author__ = 'liudong' import linecache,sys ...

  3. 在Linux系统上查看Apache服务器的错误日志

    错误日志和访问日志文件为系统管理员提供了有用的信息,比如,为 Web 服务器排障,保护系统不受各种各样的恶意活动侵犯,或者只是进行各种各样的分析以监控 HTTP 服务器.根据你 Web 服务器配置的不 ...

  4. [转]PHP错误日志

    对 于PHP开发者来说,一旦某个产品投入使用,应该立即将display_errors选项关闭,以免因为这些错误所透露的路径.数据库连接.数据表等信息 而遭到黑客攻击.但是,任何一个产品在投入使用后,都 ...

  5. linux(centos8):zabbix配置邮件报警(监控错误日志)(zabbix5.0)

    一,zabbix5.0发邮件报警的准备工作: zabbix5.0在linux平台上的安装:参见这一篇: https://www.cnblogs.com/architectforest/p/129125 ...

  6. python实现监控URL的一个值小于规定的值--邮件报警

    监控URL的一个值小于规定的值--邮件报警 #!/usr/bin/env python #-*- coding:utf-8 -*- __author__ = 'liudong' import urll ...

  7. Apache错误日志时时查看

    做项目的时候,有时候会需要查看一下apache的错误日志,然后就需要很繁琐的打开那个目录下面,看信息,只有当错误的时候我才会去打开那个文件. 但是最近我发现在开发的时候,自己忽略掉了很多错误,虽然不会 ...

  8. PHP 错误与异常 笔记与总结(7)将错误日志以邮件方式发送

    当系统发生了很严重的问题,需要立刻发送给管理员.可以通过 error_log() 将错误以邮件形式发送到邮箱. 在 php.ini 中设置: sendmail_from = 472323087@qq. ...

  9. 如何分析apache日志[access_log(访问日志)和error_log(错误日志)]

    如何分析apache日志[access_log(访问日志)和error_log(错误日志)] 发布时间: 2013-12-17 浏览次数:205 分类: 服务器 默认Apache运行会access_l ...

随机推荐

  1. 如何在Kubernetes 里添加自定义的 API 对象(一)

    环境: golang 1.15 依赖包采用go module 实例:现在往 Kubernetes 添加一个名叫 Network 的 API 资源类型.它的作用是,一旦用户创建一个 Network 对象 ...

  2. 4.Flink实时项目之数据拆分

    1. 摘要 我们前面采集的日志数据已经保存到 Kafka 中,作为日志数据的 ODS 层,从 kafka 的ODS 层读取的日志数据分为 3 类, 页面日志.启动日志和曝光日志.这三类数据虽然都是用户 ...

  3. Mysql的基本操作知识

    顺带,我会在后面把我整理的一整套CSS3,PHP,MYSQL的开发的笔记打包放到百度云,有需要可以直接去百度云下载,这样以后你们开发就可以直接翻笔记不用百度搜那么麻烦了.  笔记链接:http://p ...

  4. Redis 中常见的集群部署方案

    Redis 的高可用集群 前言 几种常用的集群方案 主从集群模式 全量同步 增量同步 哨兵机制 什么是哨兵机制 如何保证选主的准确性 如何选主 选举主节点的规则 哨兵进行主节点切换 切片集群 Redi ...

  5. 私有化轻量级持续集成部署方案--05-持续部署服务-Drone(上)

    提示:本系列笔记全部存在于 Github, 可以直接在 Github 查看全部笔记 持续部署概述 持续部署是能以自动化方式,频繁而且持续性的,将软件部署到生产环境.使软件产品能够快速迭代. 在之前部署 ...

  6. 微服务从代码到k8s部署应有尽有系列(七、支付服务)

    我们用一个系列来讲解从需求到上线.从代码到k8s部署.从日志到监控等各个方面的微服务完整实践. 整个项目使用了go-zero开发的微服务,基本包含了go-zero以及相关go-zero作者开发的一些中 ...

  7. bash初始化文件详解

    目录 交互式(interactive)shell/非交互式(non-interactive)shell 如何启动一个交互式shell/非交互式shell 如何判断是否为交互式shell 登录式(log ...

  8. 八大排序算法之直接插入排序(InsertionSort)

    常见的排序算法 今天复习[直接插入排序] 核心思想:有序数组中 找位置 -- 给无序数组第一个 找位置 ` public class InsertionSort { // 核心思想:有序数组中 找位置 ...

  9. 号称BI商业智能界的“四大天王”

    基于云部署的现代商业智能与数据分析平台(国内似乎只有应用上云,数据本地化的趋势)正在逐步占据主流市场.随着市场在易用性和增强分析(augmented analytics)的变革,数据与分析领导者正在逐 ...

  10. 【C# 线程】WaitHandle类

    理论 Windows的线程同步方式可分为2种,用户模式构造和内核模式构造.内核模式构造:是由Windows系统本身使用,内核对象进行调度协助的.内核对象是系统地址空间中的一个内存块,由系统创建维护. ...