2010-11-15 7 views
3

Je souhaite utiliser le module "journalisation" de Python pour écrire des erreurs dans un fichier journal. Cependant, je veux que le fichier ne soit créé que s'il y a des erreurs. J'utilise le code suivant:Créer un fichier journal Python uniquement en cas d'erreurs (à l'aide du module de journalisation)

import logging 

f = 'test.conf' 

logger = logging.getLogger("test_logger") 
logger.setLevel(logging.INFO) 

ch_file = logging.FileHandler("test_logger.conf") 
ch_file.setLevel(logging.ERROR) 

logger.addHandler(ch_file) 

ch_file.close() 

ch = logging.StreamHandler() 
ch.setLevel(logging.INFO) 

formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s") 

ch.setFormatter(formatter) 


logger.addHandler(ch) 

logger.info("info") 
logger.warn("warning") 
#logger.error("error") 

Lorsque logger.error (« erreur ») est décommentée, j'attends le fichier « test_logger.conf » à faire avec l'erreur en elle. Cependant, lorsque la ligne est commentée, je trouve que le fichier test_logger.conf est toujours fait et est vide. Comment puis-je faire en sorte que ce fichier ne soit pas fait, sauf s'il y a des erreurs à signaler?

Merci.

Répondre

5

Vous avez de la chance. Le FileHandler a un paramètre delay conçu à cet effet:

ch_file = logging.FileHandler("test_logger.conf",delay=True) 
Questions connexes