We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent 2bc87c0 commit 8ea2425Copy full SHA for 8ea2425
2 files changed
can/io/logger.py
@@ -259,17 +259,19 @@ def _get_new_writer(self, filename: StringPathLike) -> FileIOMessageWriter:
259
:return:
260
An instance of a writer class.
261
"""
262
- suffix = "".join(pathlib.Path(filename).suffixes[-2:]).lower()
263
-
264
- if suffix in self._supported_formats:
+ suffixes = pathlib.Path(filename).suffixes
+ for suffix_length in range(len(suffixes), 0, -1):
+ suffix = "".join(suffixes[-suffix_length:]).lower()
265
+ if suffix not in self._supported_formats:
266
+ continue
267
logger = Logger(filename=filename, **self.writer_kwargs)
268
if isinstance(logger, FileIOMessageWriter):
269
return logger
270
elif isinstance(logger, Printer) and logger.file is not None:
271
return cast(FileIOMessageWriter, logger)
272
273
raise ValueError(
- f'The log format "{suffix}" '
274
+ f'The log format of "{pathlib.Path(filename).name}" '
275
f"is not supported by {self.__class__.__name__}. "
276
f"{self.__class__.__name__} supports the following formats: "
277
f"{', '.join(self._supported_formats)}"
test/test_rotating_loggers.py
@@ -180,6 +180,14 @@ def test_on_message_received(self, tmp_path):
180
do_rollover.assert_called()
181
writers_on_message_received.assert_called_with(msg)
182
183
+ def test_issue_1792(self, tmp_path):
184
+ with self._get_instance(tmp_path / "__unused.log") as logger_instance:
185
+ writer = logger_instance._get_new_writer(
186
+ tmp_path / "2017_Jeep_Grand_Cherokee_3.6L_V6.log"
187
+ )
188
+ assert isinstance(writer, can.CanutilsLogWriter)
189
+ writer.stop()
190
+
191
192
class TestSizedRotatingLogger:
193
def test_import(self):
0 commit comments