2015-02-03 23 views
5

Próbuję skonfigurować moją konfigurację rejestrowania w pliku settings.py i jest tak wiele opcji, mam problem z replikowaniem wbudowanego dziennika serwera rozwoju (który drukuje do konsoli).Jak skonfigurować mój dziennik Django tak, aby działał jak wbudowany dziennik serwera programistycznego?

Chcę, aby mój dziennik produkcji rejestrował te same informacje, które normalnie byłyby drukowane na konsoli w dzienniku serwera rozwoju (żądania GET, informacje debugowania itp.). Muszę albo wiedzieć, które ustawienia muszę zmienić poniżej, albo lokalizację ustawień wbudowanego dziennika serwera programistycznego, aby móc to skopiować.

LOGGING = { 
    'version': 1, 
    'formatters': { 
     'verbose': { 
      'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s' 
     }, 
     'simple': { 
      'format': '%(levelname)s %(message)s' 
     }, 
    }, 
    'handlers': { 
     'console': { 
      'level': 'DEBUG', 
      'class': 'logging.StreamHandler', 
      'formatter': 'simple' 
      }, 
     'file': { 
      'level': 'DEBUG', 
      'class': 'logging.FileHandler', 
      'filename': '/home/django/django_log.log', 
      'formatter': 'simple' 
      }, 
     }, 
    'loggers': { 
     'django': { 
      'handlers': ['file'], 
      'level': 'DEBUG', 
      'propagate': True, 
      }, 
     } 
    } 

if DEBUG: 
    # make all loggers use the console. 
    for logger in LOGGING['loggers']: 
     LOGGING['loggers'][logger]['handlers'] = ['console'] 

Ja też nie chce mieć, aby dodać dowolny kod gdziekolwiek indziej, ale moje settings.py jeśli w ogóle możliwe. Nie chcę wchodzić w moje views.py i określać, jakie błędy należy wydrukować lub zalogować, nigdy nie musiałem tego robić z serwerem rozwoju, więc mam nadzieję, że mogę to zrozumieć.

+0

Używam programu uWSGI do produkcji, który przekieruje wszystkie dzienniki (z konsoli) do plików. https://docs.djangoproject.com/en/1.8/howto/deployment/wsgi/uwsgi/ – JimmyYe

Odpowiedz

3

W Django 1.8, default logging configuration dla środowiska debugowania jest:

Kiedy DEBUG jest True:

  • django catch-all rejestrator wysyła wszystkie komunikaty na poziomie WARNING lub wyższy do konsola. Django nie wykonuje takich połączeń logujących w tym czasie (wszystkie rejestrowanie jest na poziomie DEBUG lub obsługiwane przez rejestratory django.request i django.security).
  • Rejestrator, który obsługuje wiadomości od warnings.warn(), wysyła wiadomości do konsoli.

Ta konfiguracja rejestrowania można znaleźć na django.utils.log.DEFAULT_LOGGING. Zauważ, że program rejestrujący przechwytuje w rzeczywistości również komunikaty informacyjne, a nie tylko ostrzeżenia i powyżej.

Podczas przesłonięcia domyślnych ustawień rejestrowania należy pamiętać, że disable_existing_loggers, jeśli jest ustawione na True, will shut up all of Django's default loggers.


Serwer rozwój logs every incoming request directly to stderr tak:

[18/Oct/2015 12:08:17] "GET /about/ HTTP/1.1" 200 9946 

ten jest specyficzny dla serwera rozwoju i nie zostaną przeniesione do środowiska produkcyjnego, chyba że replikować go with middleware.