From 6df74806e4eeef7d185ca927ff693cc4271320e1 Mon Sep 17 00:00:00 2001 From: SKE087 Date: Thu, 15 Oct 2026 00:15:24 +0300 Subject: [PATCH] Fix Logger.setLevel crash: use a logging.Filter to drop Image noise Logger.setLevel('Image', 'CRITICAL') raised TypeError (takes 1 arg) and crash-looped the player. Kivy routes all modules through the single 'kivy' logger and the "[Image]" tag is just message-prefix formatting, so install a logging.Filter on the 'kivy' logger that drops only "Image: Error loading ..." records (benign: emitted by Video's inherited Image loader) while keeping all other Kivy log records. --- src/main.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/main.py b/src/main.py index 972aa4a..f3206c9 100644 --- a/src/main.py +++ b/src/main.py @@ -63,8 +63,21 @@ from kivy.logger import Logger # Kivy's Video widget subclasses Image, so its inherited image loader always # runs first and logs a harmless "Image: Error loading " for every # video (the real decoding is done by the ffpyplayer CoreVideo provider). -# Silence just that logger so genuine errors stay visible. -Logger.setLevel('Image', 'CRITICAL') +# Kivy routes every module through the single 'kivy' logger (the "[Image]" tag +# is just Kivy's message-prefix formatting), so drop only that one message and +# leave all other Kivy log records visible. +import logging + + +class _SuppressKivyImageNoise(logging.Filter): + def filter(self, record): + try: + return not record.getMessage().startswith('Image: Error loading') + except Exception: + return True + + +logging.getLogger('kivy').addFilter(_SuppressKivyImageNoise()) # Try to import evdev for card reader support (after Logger is available) try: