logging
配置 (settings.py)
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
LOG_DIR = os.path.join(BASE_DIR, "logs")
if not os.path.exists(LOG_DIR):
os.makedirs(LOG_DIR)
LOG_FILE = datetime.datetime.now().strftime("%Y-%m-%d") + ".log"
LOGGING = {
# version 值只能为1
'version': 1,
# True 表示禁用loggers
'disable_existing_loggers': False,
'formatters': {
'default': {
'format': '%(levelname)s %(filename)s %(funcName)s[line:%(lineno)d][%(asctime)s] - %(message)s'
},
'simple': {
'format': '%(levelname)s %(module)s %(asctime)s %(message)s'
}
},
'handlers': {
'default': {
'level': 'DEBUG',
'class': 'logging.handlers.RotatingFileHandler',
'maxBytes': 5 * 1024 * 1024, # 5M
'filename': os.path.join(LOG_DIR, LOG_FILE),
'formatter': 'default',
"backupCount": 20,
"encoding": "utf8"
},
'handler002': {
'level': 'DEBUG',
'class': 'logging.handlers.RotatingFileHandler',
'maxBytes': 5 * 1024 * 1024,
'filename': os.path.join(LOG_DIR, LOG_FILE),
'formatter': 'simple'
},
'email': {
'level': 'ERROR',
'class': 'logging.handlers.SMTPHandler',
'mailhost': ('smtp.yeah.net', 25),
'fromaddr': '0@yeah.net',
'toaddrs': '0@yeah.net',
'subject': '我是测试邮件',
'credentials': ('020@yeah.net', '')
}
},
'loggers': {
'flask': {
'handlers': ['default'],
'level': 'INFO'
},
# 使用这个logger会发异常信息到邮箱
'semail': {
'handlers': ['default', 'email'],
'level': 'INFO'
}
},
'filters': {
}
}
引入配置
from logging.config import dictConfig
from settings import LOGGING
dictConfig(LOGGING)
使用
import logging
logger = logging.getLogger('flask')
logger.error('可以使用了')
其他一些写的比较好的帖子
https://www.cnblogs.com/xybaby/p/9197032.html # 优化效率问题
更多关于邮件推送见python yeah 邮箱发邮件
如果使用的是outlook邮箱,需要像下边这样配置:
'email': {
'level': 'ERROR',
'class': 'logging.handlers.SMTPHandler',
'mailhost': ('smtp.office365.com', 587),
'fromaddr': 'sss@outlook.cn',
'toaddrs': 'sss@outlook.cn',
'subject': '[test]异常信息',
'credentials': ('sss@outlook.cn', 'sssss'),
'secure': [None, None, ssl.SSLContext(ssl.PROTOCOL_TLS)]
}
因为outlook的加密方式不是ssl