Le module "logging" est très bien pour afficher les infos en cours fonctionnement, et pour afficher des messages d'erreur. En plus, tu peux fournir un fichier de configuration au logging, pour laisser l'utilisateur final affiner ses traces.
logging peut écrire dans un fichier, dans stderr, envoyer les traces en réseau, envoyer des mail... ou tous à la fois si tu veux ! N'utilise pas les appels "looging.debug" directement mais utilise plutôt les loggers nommés:
logger=logging.getLogger('mon_module')# "mon_module" est défini dans le fichier de conf du loggingDEBUGandlogger.debug("Class::method() val = %s",val)# ce message n'est affiché qu'en mode DEBUG
(C'est la notation que j'utilise)
Le système try/except global est pas mal non plus, il permet de formater les exceptions qui arrivent impromptues.
N'hésite pas non plus à définir tes propres exceptions si tu as des trucs compliqués à tester, ça prend 2 lignes en python (on est pas chez java)
Ne met pas des try/except partout, laisse passer les "plus grosses" (fichier, io...), au pire re-raise les :
try:du_code_qui_casse()exceptIOErrorase:logger.critical('Class::method() Ouch : %s, e)raisee# re-raise l'exception après traçage. Si tu mets un try/except global, elle est tracée 2 fois
Le mise au point de fichiers de logs est quelque-chose de compliqué, entre "trop de messages" et "pas assez de messages"... Ce qui est important pour les dév ne l'est pas forcément pour l'utilisateur, et réciproquement !
Voila, bon courage !
# logging + exceptions
Posté par François GUÉRIN (Mastodon) . En réponse au message Comment gérer correctement les exceptions. Évalué à 2. Dernière modification le 03 mai 2016 à 20:23.
Bonjour,
Le module "logging" est très bien pour afficher les infos en cours fonctionnement, et pour afficher des messages d'erreur. En plus, tu peux fournir un fichier de configuration au logging, pour laisser l'utilisateur final affiner ses traces.
logging peut écrire dans un fichier, dans stderr, envoyer les traces en réseau, envoyer des mail... ou tous à la fois si tu veux ! N'utilise pas les appels "looging.debug" directement mais utilise plutôt les loggers nommés:
(C'est la notation que j'utilise)
Le système try/except global est pas mal non plus, il permet de formater les exceptions qui arrivent impromptues.
N'hésite pas non plus à définir tes propres exceptions si tu as des trucs compliqués à tester, ça prend 2 lignes en python (on est pas chez java)
Ne met pas des try/except partout, laisse passer les "plus grosses" (fichier, io...), au pire re-raise les :
Le mise au point de fichiers de logs est quelque-chose de compliqué, entre "trop de messages" et "pas assez de messages"... Ce qui est important pour les dév ne l'est pas forcément pour l'utilisateur, et réciproquement !
Voila, bon courage !