Voglio verificare la presenza di errori in un particolare file di sfondo, ma il flusso di errore standard è controllato dal programma in primo piano e gli errori nel file nella domanda non sono essere visualizzato. Posso usare il modulo logging
e scrivere l'output in un file, comunque. Mi stavo chiedendo come posso usare questo per registrare tutte le eccezioni, gli errori e le loro traceback.Utilizzo del modulo di registrazione di Python per registrare tutte le eccezioni e gli errori
risposta
Probabilmente è una cattiva idea registrare qualsiasi eccezione generata all'interno del programma, poiché Python utilizza eccezioni anche per il normale flusso di controllo.
Pertanto è necessario registrare solo eccezioni non nascoste. Puoi farlo facilmente usando il logger exception()
method, una volta che hai un oggetto di eccezione.
per gestire tutte le eccezioni non gestite fanno, è possibile avvolgere punto di ingresso del vostro scritto in un blocco try...except
, o installando un gestore di eccezioni personalizzato da ri-assegnazione 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()
Grazie! Questo è esattamente ciò di cui avevo bisogno. –
Non è una buona idea aggiungere "sys .__ excepthook __ (type, value, tb)' al proprio 'my_handler', in modo che possa elaborare le azioni predefinite sull'eccezione? – troyane
@Ferdinand Beyer: Neat. Avendo 'logger.exception (" Eccezione non rilevata: {0}: {1} ". Format (str (valore .__ classe __.__ nome__), str (valore))) dà nel mio caso' ERRORE - Eccezione non rilevata: IndexError: elenco index out of range' e stampa per qualche motivo 'None'. Come ottengo anche il traceback completo? 'tb' sembra essere un oggetto traceback ma' traceback.print_tb (tb) 'sputa anche' None'. – bioslime
- 1. Registrazione di tutte le eccezioni in un'applicazione pyqt4
- 2. NLog configurato per registrare automaticamente tutte le eccezioni?
- 3. Registrazione di eccezioni ASP classiche (errori 500 e 500.100)
- 4. Acquisizione di tutte le eccezioni in Python
- 5. Quando registrare le eccezioni concatenate?
- 6. Come posso formattare gli stacktracks delle eccezioni nella registrazione Python?
- 7. Jersey ... come registrare tutte le eccezioni, ma invocare ancora ExceptionMappers
- 8. Come posso registrare TUTTE le eccezioni a livello globale per un'app WebAPI C# MVC4?
- 9. Eccezioni prese e non rilevate di registrazione?
- 10. Spring Boot - Come registrare tutte le richieste e le risposte con eccezioni in un unico posto?
- 11. Come configurare la gemma Airbrake per registrare tutte le eccezioni di Rails negli ambienti di sviluppo e di produzione?
- 12. Come registrare tutte le eccezioni nel pacchetto Oracle?
- 13. Come posso registrare gli errori EntityValidation usando ELMAH MVC?
- 14. Errori di registrazione in ASP.NET MVC
- 15. Cattura tutte le eccezioni e restituisce anche gli errori personalizzati in Jersey
- 16. Come registrare le eccezioni uncatched di QApplication?
- 17. Spring MVC non registra tutte le eccezioni
- 18. Python cross-modulo di registrazione
- 19. Errori di registrazione PHP in registrazione
- 20. Come registrare le eccezioni "catched"?
- 21. Utilizzo del modulo Python sas7bdat
- 22. ASP.NET 5: Qual è l'approccio consigliato per catturare e registrare tutte le eccezioni non gestite?
- 23. come registrare tutte le modifiche del sottostruttura dom con gli strumenti di sviluppo di google/firebug
- 24. Spring - slf4J: come registrare automaticamente errori ed eccezioni?
- 25. Modulo di registrazione Python: logger personalizzati
- 26. Impossibile registrare gli errori del codice 500 in ELMAH
- 27. Symfony 2 Eccezioni di registrazione nella console
- 28. ELMAH e controller API in MVC4 non errori di registrazione
- 29. Utilizzo delle eccezioni per convalidare gli ingressi
- 30. Come intercettare tutte le eccezioni nel pallone?
Eventuali duplicati di [Logging non gestite fanno eccezioni in Python] (http://stackoverflow.com/questions/6234405/logging-uncaught-exceptions-in-python) –