1 from email.header import Header
2 from email.mime.text import MIMEText
3 from email.utils import parseaddr,formataddr
4 import smtplib
5 import time
6
7 def _format_addr(s):
8 name,addr = parseaddr(s)
9 return formataddr((Header(name,'utf-8').encode(),addr))
10
11 def getContent(resouce, final):
12 f = open(resouce, 'rb')
13 finalfile = open(final, 'wb')
14 try:
15 for line in f:
16 if "ERROR" in line:
17 finalfile.write(line)
18 finally:
19 f.close()
20 finalfile.close()
21
22 if __name__ == '__main__':
23 from_addr = '***' #发件地址
24 password = '***' #密码
25 to_addr = '***' #收件地址
26 smtp_server = '***' #发件的服务器,例如 smtp.163.com
27 sourcedir = "update_cat.py.log" #要分析的日志
28 objectdir = "error_log.txt" #目标日志
29 while(True):
30 getContent(sourcedir, objectdir)
31 msg = MIMEText(open(objectdir, 'r').read(), 'utf-8')
32 msg['From'] = _format_addr('programer error <%s>' % from_addr)
33 msg['To'] = _format_addr('administrator <%s>' % to_addr)
34 msg['Subject'] = Header('error information', 'utf-8').encode()
35
36 server = smtplib.SMTP(smtp_server,25)
37 server.login(from_addr,password)
38 server.sendmail(from_addr,[to_addr],msg.as_string())
39 server.quit()
40 time.sleep(3600)