From cf122e44bee2a88100fc57b16381fef6df50c81a Mon Sep 17 00:00:00 2001 From: Jan Lindemann Date: Sun, 1 Jun 2025 15:14:48 +0200 Subject: [PATCH] log.slog(): Support log flag "module" If module is present in the log flags string, the module is prepended to each log message. The length of the module prefix can be set via the new set_module_name_length() function. Signed-off-by: Jan Lindemann --- tools/python/jwutils/log.py | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/tools/python/jwutils/log.py b/tools/python/jwutils/log.py index 25f757f..3d078f4 100644 --- a/tools/python/jwutils/log.py +++ b/tools/python/jwutils/log.py @@ -53,6 +53,7 @@ CONSOLE_FONT_BLINK = '\033[5m' CONSOLE_FONT_OFF = '\033[m' f_position = 'position' +f_module = 'module' f_date = 'date' f_stderr = 'stderr' f_stdout = 'stdout' @@ -63,6 +64,7 @@ f_default = [ f_position, f_stderr, f_prio, f_color ] _flags = set(f_default) _log_prefix = '' _file_name_len = 20 +_module_name_len = 50 _short_prio_str = { EMERG : '', @@ -104,7 +106,8 @@ def get_caller_pos(up: int = 1, kwargs: Optional[dict[str, Any]] = None) -> Tupl del kwargs['caller'] return r caller = inspect.stack()[up+1] - return (basename(caller.filename), caller.lineno) + mod = inspect.getmodule(caller[0]).__name__ + return (mod, basename(caller.filename), caller.lineno) def slog_m(prio: int, *args, **kwargs) -> None: # export if prio > _level: @@ -140,10 +143,15 @@ def slog(prio: int, *args, only_printable: bool=False, **kwargs) -> None: # expo msg += _short_prio_str[prio] + ' ' if f_position in _flags: + if 'caller' in kwargs: - name, line = kwargs['caller'] + mod, name, line = kwargs['caller'] else: - name, line = get_caller_pos(1) + mod, name, line = get_caller_pos(1) + + if f_module in _flags: + msg += misc.pad(mod, _module_name_len) + msg += misc.pad(name, _file_name_len) + '[' + misc.pad(str(line), 4, True) + ']' if f_color in _flags: @@ -267,3 +275,10 @@ def set_filename_length(l: int) -> int: # export if l: _file_name_len = l return r + +def set_module_name_length(l: int) -> int: # export + global _module_name_len + r = _module_name_len + if l: + _module_name_len = l + return r