Электронная почта об ошибках Django, когда Debug = True - PullRequest
4 голосов
/ 24 июня 2011

Есть ли способ заставить Django отправлять мне сообщения об ошибках по электронной почте, даже если для отладки установлено значение True?

Я ничего не видел в документах.

Edit:

Я на Django 1.2, если это имеет значение. Нет, это не производственная система.

Ответы [ 5 ]

5 голосов
/ 10 августа 2014

Если у вас есть только одно электронное письмо, убедитесь, что в списке запятая:

ADMINS = (('Admin', 'admin@my-domain.com'),)

Я пробовал это и, кажется, работает:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'mail_admins': {
            'level': 'ERROR',
            'class': 'django.utils.log.AdminEmailHandler'
        }
    },
    'loggers': {
        'django.request': {
            'handlers': ['mail_admins'],
            'level': 'ERROR',
            'propagate': True,
        },
    }
}
3 голосов
/ 24 июня 2011

Возможно, вы захотите посмотреть django-sentry . Он действительно предназначен для использования в производстве, но имеет настройку TESTING, чтобы он работал и при DEBUG=True. В этот момент он мог бы также отправлять электронные письма - я сам этого не проверял, но он, по крайней мере, будет вести журнал ошибок, которые вы можете просмотреть в любое время с любого устройства с поддержкой Интернета.

Кроме того, когда вы в конце концов пойдете в производство, это спасет вас.

2 голосов
/ 27 февраля 2016

Просто чтобы немного расширить ответ Боба Робертса, я нашел конфигурацию регистрации по умолчанию в django.utils.log.Вы можете просто скопировать и вставить его в свои настройки, назвать его LOGGING и изменить строку:

# settings.py:
# copied from django.utils.log import DEFAULT_LOGGING
LOGGING = {
    ...
        'mail_admins': {
            'level': 'ERROR',
            # emails for all errors
            #'filters': ['require_debug_false'],
            'filters': [],
            'class': 'django.utils.log.AdminEmailHandler'
        }
    ...
}
1 голос
/ 16 мая 2014

Я полагаю, что вы можете добиться этого, указав пустой список для фильтров, связанных с вашим AdminEmailHandler, определенным в вашем settings.py.

Например:

'mail_admins': {
    'level': 'ERROR',
    'class': 'django.utils.log.AdminEmailHandler',
    'filters': []
}

По умолчанию фильтрами для этого класса будет django.utils.log.RequireDebugFalse.

0 голосов
/ 28 января 2019

Добавление следующей строки в ваш файл settings.py должно помочь.

LOGGING['handlers']['mail_admins']['filters'] = []
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...