Как * всегда * записывать исключения и трассировки в django с помощью DEBUG = False - PullRequest
0 голосов
/ 07 июня 2018

Как мне установить 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,
        },
    },
}

1 Ответ

0 голосов
/ 07 июня 2018

Хотя нет конфигурации по умолчанию, где все исключения записываются в файл журнала, есть несколько вариантов, которые вы можете попробовать в django:

  1. Настройка параметра ADMINS , чтобы получать электронные письма обо всех исключениях на вашем сайте
  2. Вы можете написать пользовательское промежуточное программное обеспечение , которое имеет метод process_exception, который пишет в регистратор с logger.error('Exception info)
...