2016-06-30 9 views
4

私のDjango Webアプリケーションでは、ログを取得できません。Django for 500のログと電子メールが機能しない

私の設定ファイルは次のようになります。私は私の意見でこれを持って

EMAIL_HOST = "smtp.gmail.com" 
EMAIL_PORT = 465 
EMAIL_HOST_USER = "[email protected]" 
EMAIL_HOST_PASSWORD = "password" 
EMAIL_USE_TLS = True 
DEFAULT_FROM_EMAIL = "[email protected]" 
SERVER_EMAIL = 'smtp.gmail.com' 

ADMINS = (
     ('Paul Tremblay', '[email protected]'), 
    ) 

LOGGING = { 
'version': 1, 
'disable_existing_loggers': False, 
'handlers': { 
    'file': { 
     'level': 'ERROR', 
     'class': 'logging.FileHandler', 
     'filename': '/var/log/django_logs/debug.log' 
    }, 
    'mail_admins': { 
    'level': 'ERROR', 
     'class': 'django.utils.log.AdminEmailHandler' 
       }, 
}, 
'loggers': { 
    'django': { 
    'handlers': ['file'], 
    'level': 'ERROR', 
    'propagate': True, 
    }, 
    'django.request': { 
    'handlers': ['file'], 
    'level': 'ERROR', 
    'propagate': True, 
    }, 
}, 
} 

ファイル:

def five_hundred_test(request): 
    raise ValueError("raising this on purpose for testing for 500") 
    return render(request, 'my_test/basic_css.html') 

私はこの関数に私のブラウザをポイントすると、予想通り、私は(500エラーを取得します)、何も私の電子メールに送られず、何もログファイルに入れられません。私はPython3でDjango 1.9を使用していますが、Apacheを使用してサーバーを実行しています。

+1

に終わるためにエラーを可能にします正しく、 'LOGGING = {'の前に余分なスペースがあります。いずれにしても、常にコンソールからエラートレースバックを追加する必要があります。 –

+0

正しく貼り付けてはいけません。私はまた、 "ロギング"の前にあまりにも多くのスペースがあることを知る。ただし、コードはエラーを発生させません(トレースを含めることはできません)。それは、それが想定していることをしないだけです。 – user3520634

+0

環境変数にエラーがあります。[SERVER_EMAIL](https://docs.djangoproject.com/en/dev/ref/settings/#server-email)に電子メールアドレスが送信されます。私はそれに応じて私の答えを更新します。 – raratiru

答えて

1

これは私の動作設定です。私はconsole loggerを追加していません。生産にのみ使用しています。インスピレーションはDjangoドキュメントのLogging Examplesに由来しています。私はあなたの環境変数に2つのエラーを発見している

from os.path import join 

# Email Configuration ========================================================== 
ADMINS = [('Me', '[email protected]'), ] 
MANAGERS = ADMINS 
DEFAULT_FROM_EMAIL = '[email protected]' 
SERVER_EMAIL = '[email protected]' 
EMAIL_HOST = 'smtp.server' 
EMAIL_HOST_USER = 'username_for_login' 
EMAIL_HOST_PASSWORD = 'password_for_login' 
EMAIL_PORT = 587 
EMAIL_USE_TLS = True 

# Logging Configuration ======================================================== 
LOGGING = { 
    'version': 1, 
    'disable_existing_loggers': False, 
    'formatters': { 
     'verbose': { 
      'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s' 
     }, 
     'simple': { 
      'format': '%(levelname)s %(message)s' 
     }, 
    }, 
    'handlers': { 
     'file': { 
      'level': 'ERROR', 
      'class': 'logging.FileHandler', 
      'filename': join(HOME_DIR, 'my_logs', 'debug.log'), 
      'formatter': 'verbose' 
     }, 
     'mail_admins': { 
      'level': 'ERROR', 
      'class': 'django.utils.log.AdminEmailHandler', 
      'formatter': 'simple' 
     }, 
    }, 
    'loggers': { 
     'django': { 
      'handlers': ['file'], 
      'level': 'ERROR', 
      'propagate': True, 
     }, 
     'django.request': { 
      'handlers': ['mail_admins'], 
      'level': 'ERROR', 
      'propagate': True, 
     }, 
    }, 
} 

:ここ

は私の電子メールとログ設定です

  • SERVER_EMAIL設定は、電子メールアドレスである必要があります。あなたはTLSを使用しているので、正しいポートが587

また、あなたがSMTPサーバーとしてGoogleを使用しようとされていないされなければならないが、このupdated answerによると、このサービスはGoogleとあなたから入手できなくなっている

  • 別のSMTPサーバーを検索する必要があります。

    また、使用する必要がある場合は、私はassembled a postにいくつかのデバッグ手法があります。

  • 0

    much simplerを実行できます。あなたは電子メールとApacheのログファイルの両方にログインしたい場合は、次の操作を行う必要があります。

    1. 設定の電子メール設定を - これはDjangoが

      SERVER_EMAIL = '[email protected]' 
      
      EMAIL_HOST = 'smtp.me.eu' 
      EMAIL_PORT = 587 
      EMAIL_USE_TLS = True 
      EMAIL_HOST_USER = SERVER_EMAIL 
      EMAIL_HOST_PASSWORD = 'password' 
      
    2. セットのメールを送ることができることを保証しますFalseからDEBUG - これは

      DEBUG = False 
      
    3. を送信エラーメールを可能にします0
    4. (あなたも、MANAGERSをお勧めします)ADMINSにエラーメールの受信者を追加 - をこれは

      ADMINS = (
          ('Me', '[email protected]'), 
      ) 
      
      MANAGERS = ADMINS 
      
    5. 最後に、メッセージを経由させませんデフォルトのコンソールフィルタを削除し、エラーメールの受信者を指定 - これは、コードを貼り付けた場合はApacheのエラーログ

      DEFAULT_LOGGING['handlers']['console']['filters'] = [] 
      
    関連する問題