Jak mogę wysyłać komunikaty śledzenia do konsoli (na przykład print
), gdy uruchamiam aplikację Django pod manage.py runserver
, ale czy te komunikaty są wysyłane do pliku dziennika, gdy uruchamiam aplikację pod Apache?
Sprawdziliśmy rejestrowanie Django i mimo że był pod wrażeniem jego elastyczność i konfigurowalność dla zaawansowanych zastosowań, ja wciąż zastanawiał się, jak radzić sobie mój prosty przypadków użycia.
Odpowiedzi:
Tekst drukowany na stderr pojawi się w dzienniku błędów httpd podczas pracy pod mod_wsgi. Możesz użyć
print
bezpośrednio lublogging
zamiast tego.źródło
print("Goodbye cruel world!", file=sys.stderr)
Oto rozwiązanie oparte na logowaniu Django. Używa ustawienia DEBUG zamiast faktycznie sprawdzać, czy używasz serwera deweloperskiego, ale jeśli znajdziesz lepszy sposób, aby to sprawdzić, powinno być łatwe do dostosowania.
szczegółowe informacje można znaleźć pod adresem https://docs.djangoproject.com/en/dev/topics/logging/ .
źródło
LOGGING['loggers'][logger]['handlers'] += ['console']
settings.py
na dole i ustawiłemDEBUG = True
(szukaj tego ustawienia u góry w tym samym pliku). Następnie uruchamiampython manage.py runserver
z terminala (szczegóły w dokumentacji django), a komunikaty dziennika pojawią się w oknie terminala. W produkcji użyłbym innego settings.py, gdzieDEBUG = False
- wiadomości dziennika trafiają/path/to/your/file.log
.Możesz skonfigurować logowanie w swoim
settings.py
pliku.Jeden przykład:
Zależy to jednak od ustawienia DEBUG i może nie chcesz martwić się o to, jak to jest skonfigurowane. Zobacz odpowiedź na temat Jak mogę sprawdzić, czy moja aplikacja Django działa na serwerze deweloperskim, czy nie? aby uzyskać lepszy sposób pisania tego warunku. Edycja: powyższy przykład pochodzi z projektu Django 1.1, konfiguracja logowania w Django zmieniła się nieco od tej wersji.
źródło
Używam tego:
logging.conf:
testapp.py:
źródło
Możesz to zrobić całkiem łatwo za pomocą
tagalog
(https://github.com/dorkitude/tagalog)Na przykład, podczas gdy standardowy moduł Pythona zapisuje do obiektu pliku otwartego w trybie dołączania, moduł App Engine (https://github.com/dorkitude/tagalog/blob/master/tagalog_appengine.py) zastępuje to zachowanie i zamiast tego używa
logging.INFO
.Aby uzyskać takie zachowanie w projekcie App Engine, można po prostu:
Możesz samodzielnie rozszerzyć moduł i nadpisać funkcję dziennika bez większych trudności.
źródło
Działa to całkiem dobrze w moim local.py, oszczędza mi bałaganu podczas regularnego logowania:
źródło