web-dev-qa-db-fra.com

Comment puis-je demander à l'enregistreur de supprimer le fichier journal existant avant d'y réécrire?

En utilisant la configuration ci-dessous, mon fichier journal sera appelé "test-debug.log" et il augmentera à l'infini à chaque fois que j'exécute le script. Je veux juste que ce fichier journal contienne les enregistrements du journal de la dernière exécution du script. Le journal doit être supprimé avant de recommencer.

Comment je fais ça?

logger = logging.getLogger('test') #Create a log with the same name as the script that created it
logger.setLevel('DEBUG')


#Create handlers and set their logging level
filehandler_dbg = logging.FileHandler(logger.name + '-debug.log')
filehandler_dbg.setLevel('DEBUG') 


#Create custom formats of the logrecord fit for both the logfile and the console
streamformatter = logging.Formatter(fmt='%(levelname)s:\t%(threadName)s:\t%(funcName)s:\t\t%(message)s', datefmt='%H:%M:%S') #We only want to see certain parts of the message


#Apply formatters to handlers
filehandler_dbg.setFormatter(streamformatter)


#Add handlers to logger
logger.addHandler(filehandler_dbg)
38
Paul H

Essaye ça:

filehandler_dbg = logging.FileHandler(logger.name + '-debug.log', mode='w')

pour ouvrir le nom de fichier en mode write au lieu du mode append, en tapotant logger.name

Plus d'informations: logging.FileHandler docs, open() et liste des modes

46
dmcc