使用logging系统发送邮件

django开发的网站正式部署上线后,通常要关闭settings.py中的DEBUG = True选项。此时如何方便获取系统存在的各种bug呢?一种解决方法是使用django的logging日志系统,并且将bug信息通过邮件发送给你。settings.py中的配置如下:

# 邮箱设置
EMAIL_HOST = 'smtp.126.com'
EMAIL_HOST_USER = 'XXXXXX'
EMAIL_HOST_PASSWORD = 'XXXXXX'
EMAIL_PORT = 25
EMAIL_USE_TLS = True
DEFAULT_FROM_EMAIL = '大青呱呱的博客 '

# 日志设置

# 要发送的邮件列表,必须项
ADMINS = (
    ('幽狐', '[email protected]'),
    ('math4s', '[email protected]')
)
# EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
SERVER_EMAIL = '[email protected]'  # 邮件发送者,必须项

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'verbose': {
            'format': '{levelname} {asctime} {module} {process:d} {thread:d} {message}',
            'style': '{'
        },
        'simple': {
            'format': '{levelname} {message}',
            'style': '{',
        },
    },
    'filters': {
        'require_debug_true': {
            '()': 'django.utils.log.RequireDebugTrue',
        },
    },
    'handlers': {
        'console': {
            'level': 'INFO',
            'filters': ['require_debug_true'],
            'class': 'logging.StreamHandler',
            'formatter': 'simple'
        },
        'mail_admins': {
            'level': 'ERROR',
            'class': 'django.utils.log.AdminEmailHandler',
            'formatter': 'verbose',
        },
        'file': {
            'level': 'WARNING',
            # 'class': 'logging.FileHandler',

            # 日志分割
            'class': 'logging.handlers.TimedRotatingFileHandler',
            'when': 'midnight',  # 分割时间为凌晨
            'backupCount': 30,  # 保留最近的30天日志

            'filename': os.path.join(BASE_DIR, 'logs/debug.log'),
            'formatter': 'verbose',
        },
    },
    'loggers': {
        'django': {
            'handlers': ['console'],
            # 'level': 'INFO',
            'propagate': True
        },
        'django.request': {
            'handlers': ['file', 'mail_admins'],
            'level': 'WARNING',
            'propagate': False,
        },
    },
}

你可能感兴趣的:(使用logging系统发送邮件)