2013-10-08 11 views
43

Mam skonfigurowany serwer django z nginx, a na niektórych stronach pojawia się błąd 403.Lokalizacja dzienników i błędów Django

Gdzie mogę znaleźć logi django? gdzie mogę zobaczyć błędy w szczegółach?

+0

Co robisz między Nginx i Django? gunicorn? Czy korzystasz z nadzoru? – Joseph

+0

Czy ustawiłeś DEBUG = True w pliku settings.py? Jeśli tak, w przypadku, gdy błędy wyglądają jak http://i.imgur.com/TWL6f.png, jest to prawdopodobnie problem z django. Jeśli błąd 403 nie jest komunikatem pełnym, to zgaduję, że jest to problem nginx. Jeśli jest to problem Django, uruchom serwer django za pomocą konsoli i przejdź do strony z błędem. Mam nadzieję, że dane wyjściowe konsoli wystarczą, aby znaleźć rozwiązanie problemu. – user1876508

Odpowiedz

46

Logs są ustawione w pliku settings.py. Nowy domyślny projekt wygląda następująco:

# 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, 
     }, 
    } 
} 

Domyślnie te pliki nie są tworzone. Jeśli chcesz te trzeba dodać parametr filename do swojej handlers

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

Spowoduje to utworzenie obrotową dziennik, który może uzyskać 15 MB w rozmiarze 10 i utrzymać wersje historycznych.

W sekcji loggers od góry, trzeba dodać applogfile do handlers dla aplikacji

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

Ten przykład umieścić swoje dzienniki w katalogu głównym Django w pliku o nazwie APPNAME.log

+0

do 'logger = logging.getLogger ('APPNAME')' w tym przypadku –

9

Konfiguracja https://docs.djangoproject.com/en/dev/topics/logging/ a następnie ten błąd wyświetli się w miejscu, w którym je wskazujesz. Domyślnie mają tendencję do wyginania się w chwastach, więc zawsze zaczynam od dobrego ustawienia rejestrowania przed czymkolwiek innym.

Tutaj jest naprawdę dobrym przykładem dla podstawowej konfiguracji: https://ian.pizza/b/2013/04/16/getting-started-with-django-logging-in-5-minutes/

EDIT: nowe połączenie zostanie przeniesiona do: https://github.com/ianalexander/ianalexander/blob/master/content/blog/getting-started-with-django-logging-in-5-minutes.html

+1

Zauważ, że łan zmienił nazwę swojej domeny na 'ian.pizza', więc oto aktualny link: https://ian.pizza/b/2013/04/16/get-started-with-django-logging-in-5-minutes/ – Jan

8

Dodaj do 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, 
     }, 
    }, 
} 

I to będzie utwórz plik o nazwie debug.log w katalogu głównym. https://docs.djangoproject.com/en/1.10/topics/logging/

+1

W Apache2, wsgi spróbuje stworzyć plik w '/ var/www/debug.log'. Spowoduje to utworzenie dwóch oddzielnych plików, jeśli twój projekt Django znajduje się poza katalogiem '/ var/www /'. Proszę użyć ''filename': os.path.join (BASE_DIR, 'debug.log'),' zamiast tego. –

Powiązane problemy