Gestion des erreurs personnalisées avec le module de journalisation de Python
Assurer que les exceptions non apprises sont correctement gérées et enregistrées une application Python. Bien que la capture et les exceptions manuelles de journalisation soient une approche viable, il peut être fastidieux et sujet aux erreurs.
pour résoudre ce problème, Python vous permet de remplacer le mécanisme de gestion des exceptions par défaut et de rediriger les exceptions non apprises vers le module de journalisation. Cela fournit un moyen pratique et systématique de capturer et de journaliser les informations d'exception détaillées.
Solution
Le problème présenté peut être résolu en modifiant la fonction globale de SyscepThook. En définissant un gestionnaire d'exceptions personnalisés, vous pouvez intercepter toutes les exceptions non apprises et les gérer comme vous le souhaitez. Voici un exemple complet et robuste:
import sys
import logging
logger = logging.getLogger(__name__)
handler = logging.StreamHandler(stream=sys.stdout)
logger.addHandler(handler)
def handle_exception(exc_type, exc_value, exc_traceback):
# Ignore KeyboardInterrupt so the application can exit with Ctrl C
if issubclass(exc_type, KeyboardInterrupt):
sys.__excepthook__(exc_type, exc_value, exc_traceback)
return
# Log the uncaught exception
logger.error("Uncaught exception", exc_info=(exc_type, exc_value, exc_traceback))
sys.excepthook = handle_exception
# Example code to test the custom exception handling
if __name__ == "__main__":
raise RuntimeError("Test unhandled")
explication
Ce code:
filtrage:
ignorer certains types d'exceptions (par exemple, clavierInterrup) en utilisant la sous-classe Vérification.
Personnalisation:Modifiez le gestionnaire de journalisation ou utilisez plusieurs gestionnaires pour contrôler le format de sortie et la destination des journaux d'exception.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3