日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

2021-01-22 Python TimedRotatingFileHandler 修改suffix后无法自动删除文件

發布時間:2025/3/21 python 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2021-01-22 Python TimedRotatingFileHandler 修改suffix后无法自动删除文件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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) # 日志等級為ERRORfh = 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 = 0while 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 = backupCountself.utc = utc if self.when == 'S':self.interval = 1 # one secondself.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 minuteself.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 hourself.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 dayself.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 weekif 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 requestedif 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) # 日志等級為ERRORfh = 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后无法自动删除文件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。