From 93863788e76730edee230207db6c4845b063f536 Mon Sep 17 00:00:00 2001 From: "Salvador E. Tropea" Date: Mon, 21 Sep 2020 19:15:44 -0300 Subject: [PATCH] Better log.warning messages - Corrent source for Python 3.8+ - Support for C style formatted strings --- kibot/log.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/kibot/log.py b/kibot/log.py index 0161f90f..a78bb274 100644 --- a/kibot/log.py +++ b/kibot/log.py @@ -11,6 +11,7 @@ Handles logging initialization and formating. """ import sys import logging +from io import StringIO # Default domain, base name for the tool domain = 'kilog' @@ -36,12 +37,21 @@ class MyLogger(logging.Logger): def warning(self, msg, *args, **kwargs): MyLogger.warn_tcnt += 1 - if msg in MyLogger.warn_hash: - MyLogger.warn_hash[msg] += 1 + if isinstance(msg, str): + buf = StringIO() + buf.write(msg % args) + buf = buf.getvalue() + else: + buf = str(msg) + if buf in MyLogger.warn_hash: + MyLogger.warn_hash[buf] += 1 return MyLogger.warn_cnt += 1 - MyLogger.warn_hash[msg] = 1 - super().warning(msg, *args, **kwargs) + MyLogger.warn_hash[buf] = 1 + if sys.version_info.major > 3 or (sys.version_info.major == 3 and sys.version_info.minor >= 8): + super().warning(buf, stacklevel=2, **kwargs) + else: + super().warning(buf, **kwargs) def log_totals(self): if MyLogger.warn_cnt: