From 054089431f177d217d9e504b6f28d661cf747c46 Mon Sep 17 00:00:00 2001 From: GeoffreyCoulaud Date: Tue, 13 Jun 2023 09:05:29 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=A8=20Made=20log=20file=20rotation=20m?= =?UTF-8?q?ore=20robust?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/logging/session_file_handler.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/logging/session_file_handler.py b/src/logging/session_file_handler.py index 1f765df..9005c27 100644 --- a/src/logging/session_file_handler.py +++ b/src/logging/session_file_handler.py @@ -46,10 +46,21 @@ class SessionFileHandler(StreamHandler): file.unlink() return + def file_sort_key(self, file: Path) -> int: + """Key function used to sort files""" + if not file.name.startswith(self.filename.name): + # First all files that aren't logs + return -1 + if file.name == self.filename.name: + # Then the latest log file + return 0 + # Then in order the other log files + return int(file.suffixes[-1][1:]) + def rotate(self) -> None: """Rotate the numbered suffix on the log files and remove old ones""" files = list(self.filename.parent.iterdir()) - files.sort(key=lambda file: file.name, reverse=True) + files.sort(key=self.file_sort_key, reverse=True) for file in files: self.rotate_file(file)