zoukankan      html  css  js  c++  java
  • python 获取错误日志,并发送邮件

    最近做了一个小练习, 获取服务的错误日志,并发送邮件给对应的负责人, 记录一下代码

    # -*- coding: utf-8 -*-
    '''
    发送错误日志
    '''
    import os
    import smtplib
    import time
    import datetime
    
    from email.mime.multipart import MIMEMultipart
    from email.mime.text import MIMEText
    from email.mime.application import MIMEApplication
    
    
    def send_mail(to_list, sub, content):  # to_list:收件人;sub:主题;content:邮件内容
      mail_host = "smtp.jd.com"  # 设置服务器
      mail_user = ""  # 用户名
      mail_pass = ""  # 口令
      mail_postfix = ""  # 发件箱的后缀
    
      me = "错误日志" + "<" + mail_user + "@" + mail_postfix + ">"  # 这里的hello可以任意设置,收到信后,将按照设置显示
      msg = MIMEMultipart()
      msg['Subject'] = sub  # 设置主题
      msg['From'] = me
      msg['To'] = ";".join(to_list)
      # ---邮件正文---
      part = MIMEText(open(objectdir, 'r').read(),_charset='gb2312')  #将错误文件内容做为邮件正文内容
      msg.attach(part)
    
      # txt类型附件
      part = MIMEApplication(open(objectdir, 'rb').read())
      part.add_header('Content-Disposition', 'attachment', filename="error_log.txt")
      msg.attach(part)
      try:
        s = smtplib.SMTP()
        s.connect(mail_host)  # 连接smtp服务器
        s.login(mail_user, mail_pass)  # 登陆服务器
        s.sendmail(me, to_list, msg.as_string())  # 发送邮件
        s.close()
        return True
      except Exception, e:
        print str(e)
        return False
    
    #获取错误日志内容
    def getContent(resouce, final):
      f = open(resouce, 'rb')
      finalfile = open(final, 'wb')
      try:
        for line in f:
            if yes_date in line:
                if "ERROR" in line:  # 按行读取,如果该行包含“ERORR”字符串,则将该行写入目标文件
                   finalfile.write(line)
    
      finally:
        f.close()
        finalfile.close()
    
    # 获取昨天的时间,这块可以任意改成自己需要的时间
    def get_yesterday_date():
      today = datetime.datetime.now()
      oneday = today - datetime.timedelta(days=1)
      yes_date = oneday.strftime("%Y-%m-%d")
      return yes_date
    
    
    if __name__ == '__main__':
      sourcedir = "D:/catalina.out"  # 需要读取的源文件路径
      objectdir = "D:/error_log.txt"  # 存放的目标文件
      mailto_list = ["dfffg@qq.com"]#收件人邮箱,可以发送存放多个
      yes_date = get_yesterday_date()
    
      getContent(sourcedir, objectdir)
      if os.path.getsize(objectdir):
          if send_mail(mailto_list, "错误日志_"+yes_date,objectdir):
            print "发送成功"
          else:
            print "发送失败"
      else:
          print "无错误日志,未发送邮件"
    

      

  • 相关阅读:
    POJ 1887 Testing the CATCHER
    HDU 3374 String Problem
    HDU 2609 How many
    POJ 1509 Glass Beads
    POJ 1458 Common Subsequence
    POJ 1159 Palindrome
    POJ 1056 IMMEDIATE DECODABILITY
    POJ 3080 Blue Jeans
    POJ 1200 Crazy Search
    软件体系结构的艺术阅读笔记1
  • 原文地址:https://www.cnblogs.com/beilai/p/5777407.html
Copyright © 2011-2022 走看看