Python配置邮件发送日志


纸上得来终觉浅,绝知此事要躬行。

Python配置邮件发送日志


前几有人在群里问,说了一些关于Python配置邮件发送日志,我感觉挺涨知识的,所以在这里就记录一下以便日后自己使用避坑。

  • 我们可以使用Pythonlogging.handlers.SMTPHandler方法,把日志发送到指定的邮箱。之前使用 163 邮箱配置参数之后可以放心使用,但是使用QQ的企业邮箱却一直报错,总是说登录超时。

Python配置邮件发送日志

  • 最后通过阅读logging的源码找到了原因,logging默认支持TLS连接,QQ企业邮箱和Gmail都是使用SSL连接的。

Python配置邮件发送日志

  • 最后附上一个简单的配置
# logging.conf完整配置
[loggers]
keys=root,test

[handlers]
keys=consoleHandler,fileHandler,testHandler

[formatters]
keys=simpleFormatter

[formatter_simpleFormatter]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s - [%(filename)s:%(lineno)s]
datefmt=

[logger_root]
level=INFO
handlers=consoleHandler,fileHandler

[logger_test]
level=INFO
handlers=testHandler
qualname=test
propagate=0

[handler_consoleHandler]
class=StreamHandler
level=INFO
formatter=simpleFormatter
args=(sys.stdout,)

[handler_fileHandler]
class=FileHandler
level=INFO
formatter=simpleFormatter
args=('log/spider_db.log', 'a')

[handler_testHandler]
class=handlers.SMTPHandler
level=INFO
formatter=simpleFormatter
args=(('smtp.163.com',25), '[email protected]', ['[email protected]','[email protected]'], 'Test SMTPHandler', ('username', 'password'))
# 邮件测试例子
import logging
import logging.config

logging.config.fileConfig("logging.conf")
logger = logging.getLogger('test')
logger.info('hello body ~')

文章作者: Escape
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Escape !