2021-01-22 Python TimedRotatingFileHandler 修改suffix后无法自动删除文件
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了2021-01-22 Python TimedRotatingFileHandler 修改suffix后无法自动删除文件,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3140字,纯文字阅读大概需要5分钟。
内容图文
![2021-01-22 Python TimedRotatingFileHandler 修改suffix后无法自动删除文件](/upload/InfoBanner/zyjiaocheng/610/ff9eb63721c4425d92dae584388cb9c9.jpg)
Python TimedRotatingFileHandler 修改suffix后无法自动删除文件
TimedRotatingFileHandler 用法
“S”: Seconds
“M”: Minutes
“H”: Hours
“D”: Days
“W”: Week day (0=Monday)
“midnight”: Roll over at midnight
设计1s一个日志,超过3个删除
log = logging.getLogger()
log.setLevel(logging.ERROR) # 日志等级为ERROR
fh = logging.handlers.TimedRotatingFileHandler("log", when='S', interval=1, backupCount=3)
fh.suffix = "%Y-%m-%d_%H-%M-%S.log"
formatter = logging.Formatter('[%(asctime)s] - %(filename)s [Line:%(lineno)d] - [%(levelname)s]-[thread:%(thread)s]-[process:%(process)s] - %(message)s')
fh.setFormatter(formatter)
log.addHandler(fh)
i = 0
while i < 100000000:
sleep(0.1)
log.error("记录" + str(i))
i = i + 1
结果是并不会删除
查看TimedRotatingFileHandler的源码
def __init__(self, filename, when='h', interval=1, backupCount=0, encoding=None, delay=False, utc=False):
BaseRotatingHandler.__init__(self, filename, 'a', encoding, delay)
self.when = when.upper()
self.backupCount = backupCount
self.utc = utc
if self.when == 'S':
self.interval = 1 # one second
self.suffix = "%Y-%m-%d_%H-%M-%S"
self.extMatch = r"^\d{4}-\d{2}-\d{2}_\d{2}-\d{2}-\d{2}$"
elif self.when == 'M':
self.interval = 60 # one minute
self.suffix = "%Y-%m-%d_%H-%M"
self.extMatch = r"^\d{4}-\d{2}-\d{2}_\d{2}-\d{2}$"
elif self.when == 'H':
self.interval = 60 * 60 # one hour
self.suffix = "%Y-%m-%d_%H"
self.extMatch = r"^\d{4}-\d{2}-\d{2}_\d{2}$"
elif self.when == 'D' or self.when == 'MIDNIGHT':
self.interval = 60 * 60 * 24 # one day
self.suffix = "%Y-%m-%d"
self.extMatch = r"^\d{4}-\d{2}-\d{2}$"
elif self.when.startswith('W'):
self.interval = 60 * 60 * 24 * 7 # one week
if len(self.when) != 2:
raise ValueError("You must specify a day for weekly rollover from 0 to 6 (0 is Monday): %s" % self.when)
if self.when[1] < '0' or self.when[1] > '6':
raise ValueError("Invalid day specified for weekly rollover: %s" % self.when)
self.dayOfWeek = int(self.when[1])
self.suffix = "%Y-%m-%d"
self.extMatch = r"^\d{4}-\d{2}-\d{2}$"
else:
raise ValueError("Invalid rollover interval specified: %s" % self.when)
self.extMatch = re.compile(self.extMatch)
self.interval = self.interval * interval # multiply by units requested
if os.path.exists(filename):
t = os.stat(filename)[ST_MTIME]
else:
t = int(time.time())
self.rolloverAt = self.computeRollover(t)
关键是下面的几行
self.suffix = "%Y-%m-%d_%H-%M-%S"
self.extMatch = r"^\d{4}-\d{2}-\d{2}_\d{2}-\d{2}-\d{2}$"
······
······
self.extMatch = re.compile(self.extMatch)
默认设置when类型后,suffix是固定的,匹配的正则也是源码里写好的,所以当修改suffix后,必须连带正则一并修改
最终代码如下
log = logging.getLogger()
log.setLevel(logging.ERROR) # 日志等级为ERROR
fh = logging.handlers.TimedRotatingFileHandler("log", when='S', interval=1, backupCount=3)
fh.suffix = "%Y-%m-%d_%H-%M-%S.log"
fh.extMatch = r"^\d{4}-\d{2}-\d{2}_\d{2}-\d{2}-\d{2}.log$"
fh.extMatch = re.compile(fh.extMatch)
formatter = logging.Formatter('[%(asctime)s] - %(filename)s [Line:%(lineno)d] - [%(levelname)s]-[thread:%(thread)s]-[process:%(process)s] - %(message)s')
fh.setFormatter(formatter)
log.addHandler(fh)
i = 0
while i < 100000000:
sleep(0.1)
log.error("记录" + str(i))
i = i + 1
内容总结
以上是互联网集市为您收集整理的2021-01-22 Python TimedRotatingFileHandler 修改suffix后无法自动删除文件全部内容,希望文章能够帮你解决2021-01-22 Python TimedRotatingFileHandler 修改suffix后无法自动删除文件所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。