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