Python logging define schedule erase of log file

Below is my current logging configuration.

I would like to know how can I get my log file cleared every 2 days, as I do have my script running on crontab schedule daily during the day.

logger = logging.getLogger('MyLog')
logger.setLevel(logging.INFO)
formatter = logging.Formatter(
    '%(asctime)s - %(name)s - %(levelname)-5.5s - %(message)s', "%Y-%m-%d %H:%M:%S")
file_handler = logging.FileHandler(
    'MyLog.log', 'a', encoding='utf-8')
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)

Here's an Example which supposed to clear the log file after each 2 min.

import logging
from logging.handlers import TimedRotatingFileHandler

logger = logging.getLogger('MyLog')
logger.setLevel(logging.INFO)
formatter = logging.Formatter(
    '%(asctime)s - %(name)s - %(levelname)-5.5s - %(message)s', "%Y-%m-%d %H:%M:%S")

file_handler = TimedRotatingFileHandler(
    filename='MyLog.log', when='M', interval=2, encoding='utf-8')

file_handler.setFormatter(formatter)
logger.addHandler(file_handler)
logger.info('Hi')

Output after several running is below (log file not cleared):

2021-04-24 23:14:24 - MyLog - INFO  - Hi
2021-04-24 23:15:26 - MyLog - INFO  - Hi
2021-04-24 23:15:33 - MyLog - INFO  - Hi
2021-04-24 23:15:39 - MyLog - INFO  - Hi
2021-04-24 23:15:40 - MyLog - INFO  - Hi
2021-04-24 23:15:57 - MyLog - INFO  - Hi
2021-04-24 23:16:07 - MyLog - INFO  - Hi
2021-04-24 23:16:11 - MyLog - INFO  - Hi
2021-04-24 23:16:16 - MyLog - INFO  - Hi
2021-04-24 23:16:22 - MyLog - INFO  - Hi
2021-04-24 23:16:23 - MyLog - INFO  - Hi
2021-04-24 23:16:34 - MyLog - INFO  - Hi
2021-04-24 23:17:08 - MyLog - INFO  - Hi

Upvotes: 0

Views: 158

Answers (1)

Dylan B.
Dylan B.

Reputation: 21

file_handler = TimedRotatingFileHandler(
  filename='MyLog.log', when='D', interval=2, encoding='utf-8', backupCount=1)

You need a backupCount parameter to delete the old log files.

Upvotes: 1

Related Questions