Better log.warning messages

- Corrent source for Python 3.8+
- Support for C style formatted strings
This commit is contained in:
Salvador E. Tropea 2020-09-21 19:15:44 -03:00
parent ed7eae0338
commit 93863788e7
1 changed files with 14 additions and 4 deletions

View File

@ -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: