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 sys
import logging import logging
from io import StringIO
# Default domain, base name for the tool # Default domain, base name for the tool
domain = 'kilog' domain = 'kilog'
@ -36,12 +37,21 @@ class MyLogger(logging.Logger):
def warning(self, msg, *args, **kwargs): def warning(self, msg, *args, **kwargs):
MyLogger.warn_tcnt += 1 MyLogger.warn_tcnt += 1
if msg in MyLogger.warn_hash: if isinstance(msg, str):
MyLogger.warn_hash[msg] += 1 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 return
MyLogger.warn_cnt += 1 MyLogger.warn_cnt += 1
MyLogger.warn_hash[msg] = 1 MyLogger.warn_hash[buf] = 1
super().warning(msg, *args, **kwargs) 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): def log_totals(self):
if MyLogger.warn_cnt: if MyLogger.warn_cnt: