【问题标题】:How to *always* log exceptions and stacktraces in django with DEBUG = False如何使用 DEBUG = False 在 django 中*始终*记录异常和堆栈跟踪
【发布时间】:2018-06-07 19:40:17
【问题描述】:

如何设置DEBUG = False,但确保正确记录异常(无论它们可能在哪里抛出),包括堆栈跟踪。

这是我的日志配置:

LOGGING = {
    'version': 1,
    'filters': {
        'require_debug_false': {'()': 'django.utils.log.RequireDebugFalse'},
        'require_debug_true': {'()': 'django.utils.log.RequireDebugTrue'}
    },
    'formatters': {
        'django.server': {
            '()': 'django.utils.log.ServerFormatter',
            'format': '[%(server_time)s] %(message)s'
        }
    },
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',
            'filters': ['require_debug_true'],
            'level': 'DEBUG'
        },
        'django.server': {
            'class': 'logging.StreamHandler',
            'formatter': 'django.server',
            'level': 'INFO'
        },
        'mail_admins': {
            'class': 'django.utils.log.AdminEmailHandler',
            'filters': ['require_debug_false'],
            'level': 'ERROR'
        }
    },
    'root': {
        'level': 'DEBUG',
        'handlers': ['console']
    },
    'loggers': {
        'django.request': {
            'handlers': ['console'],
            'propagate': False,
            'level': 'DEBUG',
        },
        'django': {
            'handlers': ['console'],
            'propagate': False,
            'level': 'DEBUG',
        },
        'django.template': {
            'handlers': ['console'],
            'level': 'INFO',
            'propagate': False,
        },
        'django.security': {
            'handlers': ['mail_admins'],
            'level': 'ERROR',
            'propagate': False,
        },
    },
}

【问题讨论】:

    标签: django logging django-2.0


    【解决方案1】:

    虽然没有将所有异常记录在日志文件中的默认配置,但您可以在 django 中尝试以下几个选项:

    1. 配置ADMINS setting,以接收有关您网站中所有异常情况的电子邮件
    2. 你可以写一个custom middleware,它有一个process_exception 方法用logger.error('Exception info) 写入记录器

    【讨论】:

    • 传入 process_exception 的异常似乎无法访问堆栈跟踪
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-15
    • 2013-02-21
    • 2014-04-29
    • 1970-01-01
    • 1970-01-01
    • 2011-06-08
    相关资源
    最近更新 更多