From: Scott Gasch Date: Mon, 3 Apr 2023 16:25:25 +0000 (-0700) Subject: Fix squelch repeated log messages to work with modules loaded via X-Git-Url: https://wannabe.guru.org/gitweb/?a=commitdiff_plain;h=d2fb91b409c2e624aa9dcf0070c2c199c95e5411;p=pyutils.git Fix squelch repeated log messages to work with modules loaded via "from foo import bar" type syntax. --- diff --git a/src/pyutils/function_utils.py b/src/pyutils/function_utils.py index ba1d469..8b2cd37 100644 --- a/src/pyutils/function_utils.py +++ b/src/pyutils/function_utils.py @@ -28,19 +28,19 @@ def function_identifier(f: Callable) -> str: """ - if f.__module__ == '__main__': + if f.__module__ == "__main__": from pathlib import Path import __main__ module = __main__.__file__ module = Path(module).stem - return f'{module}:{f.__name__}' + return f"{module}:{f.__name__}" else: - return f'{f.__module__}:{f.__name__}' + return f"{f.__module__}:{f.__name__}" -if __name__ == '__main__': +if __name__ == "__main__": import doctest doctest.testmod() diff --git a/src/pyutils/logging_utils.py b/src/pyutils/logging_utils.py index e1f3a22..c99cb4e 100644 --- a/src/pyutils/logging_utils.py +++ b/src/pyutils/logging_utils.py @@ -51,6 +51,7 @@ import enum import io import logging import os +import re import sys from logging.config import fileConfig from logging.handlers import RotatingFileHandler, SysLogHandler @@ -263,6 +264,10 @@ def squelch_repeated_log_messages(squelch_after_n_repeats: int) -> Callable: from pyutils import function_utils identifier = function_utils.function_identifier(f) + + # Get rid of module paths, e.g. pyutils.ansi:bg -> ansi:bg which + # is what we're going to need below. + identifier = re.sub(r"[^\.]+\.", "", identifier) squelched_logging_counts[identifier] = squelch_after_n_repeats return f