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
image

posted @ 2022-07-01 19:03  一枚码农  阅读(121)  评论(0编辑  收藏  举报