v1.5.4: fix run-log handler-lek bij reload

_setup_run_log ruimde handlers alleen op via het instance-attribuut
self._run_logger; bij een maubot-reload is dat op de nieuwe instance weer
None, terwijl de geregistreerde logger (zelfde naam) de oude handler behield.
Elke reload voegde zo een handler toe, waardoor elke poll-run N× werd
gelogd. Fix: logger altijd op naam opruimen.
This commit is contained in:
Eddy de Vink 2026-09-08 14:47:48 +02:00
commit aa3965dcba
3 changed files with 10 additions and 7 deletions

Binary file not shown.

View file

@ -128,18 +128,21 @@ class RSSBot(Plugin):
self._setup_run_log()
def _setup_run_log(self) -> None:
if self._run_logger:
for handler in list(self._run_logger.handlers):
self._run_logger.removeHandler(handler)
handler.close()
self._run_logger = None
# De logger zelf is gedeeld over reloads (zelfde log-naam). Bij een
# maubot-reload is self._run_logger op de nieuwe instance weer None,
# terwijl de oude handler aan de geregistreerde logger blijft hangen.
# Daarom ALTIJD op naam opruimen, niet op het instance-attribuut:
# anders wordt elke poll-run eenmalig per reload gelogd (N× duplicaat).
self._run_logger = logging.getLogger(f"{self.log.name}.runlog")
for handler in list(self._run_logger.handlers):
self._run_logger.removeHandler(handler)
handler.close()
self._run_handler = None
run_log_file = self.config["run_log_file"] if "run_log_file" in self.config else ""
if not run_log_file:
return
self._run_handler = logging.FileHandler(run_log_file, encoding="utf-8")
self._run_handler.setFormatter(logging.Formatter("%(asctime)s %(message)s"))
self._run_logger = logging.getLogger(f"{self.log.name}.runlog")
self._run_logger.setLevel(logging.INFO)
self._run_logger.propagate = False
self._run_logger.addHandler(self._run_handler)