2015-08-13 8 views
5

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ć?

+1

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

+1

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' –

Odpowiedz

2
  • Dla części debugowania pytania

    @zopieux komentuje:

    Po pierwsze, sprawdź, czy maile są wysyłane. Zestaw:

    EMAIL_HOST = 'localhost' 
    EMAIL_PORT = 1025 
    EMAIL_USE_TLS = False 
    EMAIL_USE_SSL = False 
    

    Następnie uruchom obojętne serwer SMTP:

    python -m smtpd -n -c DebuggingServer localhost:1025

    Jeśli to działa, można cofnąć zmiany i ręcznie wysłać wiadomość e-mail, jak opisano w tym relevant question:

    from django.core.mail import EmailMessage 
    email = EmailMessage('Hello', 'World', to=['[email protected]']) 
    email.send() 
    
  • Aby skorzystać z funkcji Google jako serwera SMTP:

    - i zaktualizowano - odpowiedź na pytanie stwierdza, że ​​Google nie obsługuje już tej funkcji (2016) i że powinieneś spróbować znaleźć inny serwer SMTP.

Opublikowałem mój pracujący logging configuration w celach informacyjnych.

Powiązane problemy