2021-01-22 Python TimedRotatingFileHandler 修改suffix后无法自动删除文件
生活随笔
收集整理的這篇文章主要介紹了
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后无法自动删除文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021-01-21 linux she
- 下一篇: 2021-01-22 使用 Docker