I'm trying to create logfiles for my script. It is important that a new file get's created by every run.
My script looks like this
from datetime import datetime as dt
import logging
import os
file_name = os.path.basename(__file__).split('.')[0]
file_ts = dt.now().strftime('%Y_%m_%d__%H_%M_%S')
log_file_name = f"C:/Program Files/WinPython3.9.5.0/Logfiles/{file_name}/{file_name}_{file_ts}.log"
err_log_file_name = f"C:/Program Files/WinPython3.9.5.0/Logfiles/{file_name}/error_{file_name}_{file_ts}.log"
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s:%(name)s:%(message)s')
file_handler = logging.FileHandler(log_file_name)
file_handler.setLevel(logging.DEBUG)
file_handler.setFormatter(formatter)
file_handler_err = logging.FileHandler(err_log_file_name)
file_handler_err.setLevel(logging.ERROR)
file_handler_err.setFormatter(formatter)
logger.addHandler(file_handler)
logger.addHandler(file_handler_err)
try:
my code
logger.debug(f"Dataframe for area xyz in year 123 has 567 values.")
except:
logger.exception("Error message")
file_handler_err.close()
file_handler.close()
if os.path.getsize(err_log_file_name) == 0:
os.remove(err_log_file_name)
The code works fine. Empty error logs get deleted, too.
My problem: even though a new logfile get's created every run, python writes the same logs into all existing logfiles. Which means that after a while, the first logfiles contains all logs from the following runs.
Any idea what I am doing wrong? How do I tell Python to write the logs only into the new logfile?