Chcę sprawdzić błędy w konkretnym pliku tła, ale standardowy strumień błędów jest kontrolowany przez program na pierwszym planie, a błędy w pliku w pytaniu nie są są wyświetlane. Mogę jednak używać modułu logging
i zapisywać dane wyjściowe do pliku. Zastanawiam się, w jaki sposób mogę użyć tego do rejestrowania wszystkich wyjątków, błędów i ich śledzenia.Korzystanie z modułu logowania Pythona do rejestrowania wszystkich wyjątków i błędów
Odpowiedz
To chyba zły pomysł, aby zalogować każdy wyjątek wyrzucony w programie, ponieważ Python używa wyjątków również do normalnego przepływu sterowania.
Dlatego należy rejestrować tylko wyjątki od niezatłoczonych. Możesz to łatwo zrobić za pomocą logger'a exception()
method, gdy masz obiekt wyjątku.
Aby obsłużyć wszystkie przechwycone wyjątki, można owinąć punkt wejścia twojego skryptu w try...except
bloku, albo przez zainstalowanie niestandardowej obsługi wyjątku przez ponowne przypisanie sys.excepthook()
:
import logging
import sys
logger = logging.getLogger('mylogger')
# Configure logger to write to a file...
def my_handler(type, value, tb):
logger.exception("Uncaught exception: {0}".format(str(value)))
# Install exception handler
sys.excepthook = my_handler
# Run your main script here:
if __name__ == '__main__':
main()
Dzięki! Dokładnie tego potrzebowałem. –
Czy to nie jest dobry pomysł, aby dodać 'sys .__ excepthook __ (type, value, tb)' do 'my_handler', aby mógł on przetworzyć domyślne akcje na wyjątku? – troyane
@Ferdinand Beyer: Schludny. Mając 'logger.exception (" Uncaught exception: {0}: {1} "format (str (wartość .__ klasa __.__ name__), str (wartość)))' daje w moim przypadku 'ERROR - Uncaught wyjątek: IndexError: list indeks poza zakresem' i drukuje z jakiegoś powodu 'Brak'. W jaki sposób mogę uzyskać pełne informacje zwrotne? 'tb' wydaje się być obiektem traceback, ale' traceback.print_tb (tb) 'również wypluwa' None'. – bioslime
- 1. Wydrukuj hierarchię wyjątków/błędów Pythona
- 2. Jak zapobiec obcinaniu pliku dziennika za pomocą modułu logowania Pythona?
- 3. Tworzenie scentralizowanego systemu rejestrowania wyjątków
- 4. Najlepsze wskazówki dotyczące rejestrowania wyjątków usług GWT
- 5. Zapisywanie wszystkich błędów określonego typu wewnątrz modułu
- 6. Jak można używać modułu rejestrowania w pythonie z modułem unittest?
- 7. Jak skonfigurować cel NLog do rejestrowania wyjątków?
- 8. Korzystanie z konta Google do logowania
- 9. Korzystanie socket.io z modułu
- 10. Klasy błędów wyjątków Rubiego
- 11. Wzorce projektowe: obsługa wyjątków i błędów
- 12. Jaki jest najprostszy sposób na przejście z rejestrowania wyjątków do obsługi wyjątków w aplikacji Spring MVC?
- 13. Obsługa błędów STL bez wyjątków
- 14. Usunięcie wszystkich znaczników javascript i znaczników stylu z html przy użyciu pythona i modułu lxml
- 15. Korzystanie z Pythona i Matplotlib na Androidzie
- 16. Czy PyCharm wyświetla listę wszystkich błędów Pythona w projekcie?
- 17. Wywołanie modułu Pythona z Perl
- 18. Spring MVC nie rejestruje wszystkich wyjątków
- 19. Python: zwyczaj rejestrowania we wszystkich modułach
- 20. Korzystanie z GitHub z innym programem do śledzenia błędów?
- 21. Przekierowywanie sys.stdout do logowania Python
- 22. Jak uzyskać śledzenie stosu podczas rejestrowania wyjątków z językiem NLog?
- 23. Czy korzystanie z błędów uwierzytelniania/autoryzacji jest dobrą praktyką przy użyciu wyjątków?
- 24. Catching wszystkich nieobsługiwanych wyjątków C++?
- 25. Zależność od modułu Pythona
- 26. Obsługa błędów modułu Zend Framework
- 27. Zamówienie inicjalizacji modułu Pythona?
- 28. Co należy uwzględnić w najnowocześniejszej strategii obsługi błędów i wyjątków?
- 29. Obserwowanie łańcucha RxJava i obsługa błędów (niestandardowa propagacja wyjątków)
- 30. Łapanie wszystkich wyjątków w Pythonie
Możliwy duplikat [Logging niezłapane wyjątki w Python] (http://stackoverflow.com/questions/6234405/logging-uncaught-exceptions-in-python) –