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 "無錯誤日志,未發送郵件"

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM