首页 > 解决方案 > Python日志记录定义日志文件的计划擦除

问题描述

以下是我当前的日志记录配置。

我想知道如何每 2 天清除一次日志文件,因为我的脚本每天都按 crontab 计划运行。

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)

这是一个示例,它应该每 2 分钟清除一次日志文件。

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')

几次运行后的输出如下(未清除日志文件):

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

标签: pythonlogging

解决方案


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

您需要一个backupCount参数来删除旧的日志文件。


推荐阅读