Search code examples
pythonloggingpython-logging

Logging to python file doesn't overwrite file when using the mode='w' argument to FileHandler


I have some code to set up a log in Python 2.7 (using the logging module):

import os
import logging
logger=logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
log_filename=os.path.join(os.path.dirname(copasi_file),os.path.split(copasi_file)[1][:-4]+'_log.log')
handler=logging.FileHandler(log_filename,mode='w')
formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.debug('debugging message')

This code works and I am getting the output, however I intend to use this log to do a lot of debugging so I want to overwrite the log file each time its run. In the docs say to use the mode keyword argument to the 'FileHandler. It doesn't specify precisely *which* mode to use for overwrite file each time but I think a reasonable assumption would bemode='w'`. This however doesn't work. Can anybody tell me why?


Solution

  • The problem is that the file doesn't actually get overwritten until a new python shell is started.