2013-10-08 90 views
43

我用nginx設置了django服務器,並且它在某些頁面中得到403錯誤。Django日誌和錯誤的位置

我在哪裏可以找到django日誌?我在哪裏可以看到詳細的錯誤?

+0

你在nginx和Django之間運行什麼? gunicorn?你在使用主管嗎? – Joseph

+0

你在settings.py文件中設置了DEBUG = True嗎?如果是這樣,如果錯誤看起來像http://i.imgur.com/TWL6f.png,那麼它可能是一個django問題。如果403錯誤不是一個詳細的消息,那麼我想這是一個nginx問題。如果這是一個Django問題,請使用控制檯啓動您的django服務器,然後轉到提供錯誤的頁面。希望控制檯輸出足以讓你找出你的問題。 – user1876508

回答

46

Logs設置在您的settings.py文件中。一個新的默認項目如下所示:

# A sample logging configuration. The only tangible logging 
# performed by this configuration is to send an email to 
# the site admins on every HTTP 500 error when DEBUG=False. 
# See http://docs.djangoproject.com/en/dev/topics/logging for 
# more details on how to customize your logging configuration. 
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, 
     }, 
    } 
} 

默認情況下,這些不會創建日誌文件。如果你想這些,你需要一個filename參數添加到您的handlers

'applogfile': { 
     'level':'DEBUG', 
     'class':'logging.handlers.RotatingFileHandler', 
     'filename': os.path.join(DJANGO_ROOT, 'APPNAME.log'), 
     'maxBytes': 1024*1024*15, # 15MB 
     'backupCount': 10, 
    }, 

這將建立一個循環日誌,可以在大小獲得15 MB,並保持10個歷史版本。

在從上面的loggers部分,你需要添加applogfilehandlers爲您的應用

'loggers': { 
     'django.request': { 
      'handlers': ['mail_admins'], 
      'level': 'ERROR', 
      'propagate': True, 
     }, 
     'APPNAME': { 
      'handlers': ['applogfile',], 
      'level': 'DEBUG', 
     }, 
    } 

這個例子將會把你的日誌在你的Django根在一檔名爲APPNAME.log

+0

做'logger = logging.getLogger('APPNAME')'在這種情況下 –

9

設置https://docs.djangoproject.com/en/dev/topics/logging/然後這些錯誤會迴應你指向它們的位置。默認情況下,它們傾向於在雜草中消失,所以我總是在開始之前先完成一個良好的日誌記錄設置。

這裏是一個基本的設置一個很好的例子: https://ian.pizza/b/2013/04/16/getting-started-with-django-logging-in-5-minutes/

編輯:新的鏈接被移動到:https://github.com/ianalexander/ianalexander/blob/master/content/blog/getting-started-with-django-logging-in-5-minutes.html

+1

請注意,Ian將他的域重命名爲'ian.pizza',所以這裏是實際的鏈接:https://ian.pizza/b/2013/04/16/getting-started-with-django-logging-in-5-minutes/ – Jan

8

添加到您的settings.py

LOGGING = { 
    'version': 1, 
    'disable_existing_loggers': False, 
    'handlers': { 
     'file': { 
      'level': 'DEBUG', 
      'class': 'logging.FileHandler', 
      'filename': 'debug.log', 
     }, 
    }, 
    'loggers': { 
     'django': { 
      'handlers': ['file'], 
      'level': 'DEBUG', 
      'propagate': True, 
     }, 
    }, 
} 

,它會在你的根目錄下創建一個名爲debug.log的文件。 https://docs.djangoproject.com/en/1.10/topics/logging/

+1

在Apache2上,wsgi會嘗試在'/ var/www/debug.log'中創建一個文件。如果您的Django項目位於'/ var/www /'目錄之外,這將創建2個單獨的文件。請使用''filename':os.path.join(BASE_DIR,'debug.log'),'代替。 –