Chciałbym wyjściowe wiadomości debugowania w mojej aplikacji django w różnych punktach funkcja widoku. Dokumenty dla django-debug-toolbar mówią, że używa on wbudowanego logowania Pythona, ale nie mogę znaleźć więcej informacji. Naprawdę nie chcę logować się do pliku, ale do okienka informacji na pasku narzędzi. Jak to działa?Jak korzystać z funkcji rejestrowania w pasku narzędzi Django?
Odpowiedz
Po prostu używasz metod logging module, a DjDT przechwytuje i wyświetla je w panelu rejestrowania.
import logging
logging.debug('Debug Message')
if some_error:
logging.error('Error Message')
Zapisywanie bezpośrednio do głównego rejestratora, jak wspomniano powyżej @ jonwd7, zazwyczaj nie jest zalecane. Generalnie podążam za tym wzorcem:
import logging
logger = logging.getLogger(__name__)
del logging # To prevent accidentally using it
...
logger.debug("Some message")
Pozwala to na znacznie dokładniejszą kontrolę nad tym, które komunikaty rejestrowania nie są wyświetlane. Niestety, użycie go w ten sposób powoduje zatrzymanie paska narzędzi debugowania django przed przechwytywaniem komunikatów dziennika, chyba że określono konkretną konfigurację rejestrowania. Oto najprostsza mogę wymyślić:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'incremental': True,
'root': {
'level': 'DEBUG',
},
}
Ustawienie „pierwotne” i „disable_existing_loggers” są zarówno ważne, więc nie jesteś wyłączenie obsługi paska narzędzi dołączone do rejestratora głównego. Wszystko, co chcesz zrobić, to ustawić log programu głównego jako "DEBUG". Możesz także użyć wpisu "rejestratory", aby ustawić poziomy dla określonych rejestratorów. Po prostu pomiń sekcję "Handlers" i ustaw "propaguj": Prawda, więc przechwytuje je handler DjDT.
Jeśli masz już konfiguracyjny DYSK LOGOWANIA, a nie chcesz go zepsuć, przełączając się na "przyrostowy", musisz ponownie dodać dziennik DjDT jako program obsługi, a następnie dodać go do lista programów obsługi root logger.
from debug_toolbar.panels.logging import collector # needed for handler constructor below
LOGGING = {
# existing options, formatters, loggers, etc
handlers = {
# existing handlers
'djdt_log': {
'level': 'DEBUG',
'class': 'debug_toolbar.panels.logging.ThreadTrackingHandler',
'collector': collector,
},
},
'root': {
'level': 'DEBUG',
'handlers': ['djdt_log'],
},
}
Jeśli jest to czystszy sposób, chciałbym to zobaczyć.
- 1. Jak korzystać z wizualnych narzędzi scalających?
- 2. Jak wyśrodkować menu akcji na pasku narzędzi
- 3. Jak wyśrodkować ImageView na pasku narzędzi?
- 4. jak korzystać z narzędzi wyszukiwania tortoisehg?
- 5. showAsAction = "zawsze" jest ignorowane w pasku narzędzi
- 6. Jak mogę użyć VectorDrawable w pasku narzędzi Android?
- 7. Przycisk Wstecz w pasku narzędzi nie działa
- 8. Menu rozwijane w pasku narzędzi WPF
- 9. Jak korzystać z CommaSeparatedIntegerField w django?
- 10. Jak korzystać z funkcji Intent.ATTACH_DATA
- 11. Jak korzystać z funkcji Unlink()
- 12. Jak korzystać z funkcji numpy.append
- 13. Jak korzystać z funkcji cgsize?
- 14. Jak korzystać z funkcji strcasestr()?
- 15. Jak korzystać z funkcji sprof?
- 16. Opcje menu niewidoczne na zwijanym pasku narzędzi
- 17. Jak dodać link w pasku narzędzi MediaWiki VisualEditor?
- 18. Jak wyświetlić bieżącą gałąź Git w pasku narzędzi Eclipse?
- 19. Jak dodać przycisk wyszukiwania na pasku narzędzi w materiale projektowym
- 20. Jak wyśrodkować tytuł na pasku narzędzi (nawet z wyświetlonym przyciskiem Wstecz paska narzędzi)
- 21. Jak korzystać z funkcji setTimeout() w Coffeescript?
- 22. Jak korzystać z funkcji __doPostBack w asp.net
- 23. jak korzystać z funkcji zagregowanego w meteor
- 24. Jak korzystać z funkcji Winapi w java?
- 25. Jak korzystać z funkcji MySQL w Propel
- 26. Jak korzystać z funkcji agregacji w R
- 27. Jak korzystać z funkcji klasy w C++?
- 28. Jak korzystać z funkcji winy w TFS?
- 29. Jak korzystać z funkcji "group_by_window" w TensorFlow
- 30. Przeciążanie funkcji narzędzi w Haskell
Dziękuję za szczegółowe informacje w dzienniku głównym. To informacja, której brakuje w innych odpowiedziach. – jnns
część ustawienia pomógł mi, dzięki! Nadal dobra rada w 2016 roku – Jeff