Używam Django 1.8. Ten plik jest moje ustawienia bazowe:Django nie wysyła błędów z błędami - jak mogę debugować?
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'filters': {
'require_debug_false': {
'()': 'django.utils.log.RequireDebugFalse'
}
},
'handlers': {
'mail_admins': {
'level': 'ERROR',
'filters': ['require_debug_false'],
'class': 'django.utils.log.AdminEmailHandler'
}
},
'loggers': {
'django.request': {
'handlers': ['mail_admins'],
'level': 'ERROR',
'propagate': True,
},
}
}
ADMINS = (
('ME', '[email protected]'),
)
MANAGERS = ADMINS
A to są moje ustawienia produkcyjne:
########## EMAIL CONFIGURATION
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = '[email protected]'
EMAIL_HOST_PASSWORD = utils.get_env_setting('GMAIL_PASS')
EMAIL_SUBJECT_PREFIX = '[%s] ' % SITE_NAME
SERVER_EMAIL = EMAIL_HOST_USER
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
########## END EMAIL CONFIGURATION
on używany do wysyłania wiadomości e-mail o błędzie w produkcji, ale został zatrzymany. Ustawiłem stronę, która zwraca 500 błędów, więc mogę przetestować to dalej - żadne wiadomości e-mail nie są wysyłane podczas ładowania.
Próbowałem debugowania oczywistych rzeczy:
- nadal mogę zalogować się
[email protected]
i nie wydaje się, aby zostały zablokowane. - Sprawdziłem mój filtr antyspamowy.
- Jestem pewien, że
DEBUG
jest ustawiony na wartość false. - Wierzę, że zmienna środowiskowa
GMAIL_PASS
jest dostępna dla użytkownika Django.
Jak mogę to poprawić?
Najpierw sprawdź, czy są wysyłane wiadomości e-mail. Ustaw 'HOST' na' localhost', 'PORT' na' 1025', wyłącz 'TLS' i uruchom fałszywy serwer SMTP za pomocą następującego polecenia:' python -m smtpd -n -c DebuggingServer localhost: 1025' – zopieux
W przypadku pomaga każdemu, zajęło mi trochę czasu, aby dowiedzieć się, że nie musisz tylko określać 'mail_admins' pod kluczem' handlers', ale ** także ** musisz włączyć ten handler pod klawiszem 'loggers' –