dstrohl / Python_log_indenter

A python helper class that provides additional log formatting such as indenting, counters.
GNU General Public License v2.0
4 stars 1 forks source link

Location information in log show pli.py instead of logging location #2

Open texasaggie97-zz opened 5 years ago

texasaggie97-zz commented 5 years ago

python_log_indenter is very useful and what I was looking for. I have found one small thing.

I have (%(filename)s:%(funcName)s:%(lineno)s) in the formatted string that I am using for logging.

When using IndentedLoggerAdapter() the file location shows pli.py instead of the actual location that has the logging statement. I don't know the inner workings of Python logging well enough to know if there is a way to pass that location information on to the actual logging function.

dstrohl commented 5 years ago

Yeah, that's a challange I hadn't thought fo at the time, though it's a common issue with things like this.

Later in a different program I made this function...

def get_line_no(offset=0, sep='\n'): try: raise NotImplementedError() except NotImplementedError: formatted_lines = traceback.format_stack() tmp_stack = [] start = False for line in formatted_lines: if 'unittest' in line.lower() or 'django' in line.lower(): start = True continue if '\who_helpers\test_helpers.py' in line: continue if not start: continue

        tmp_stack.append(line)

    return ''.join(tmp_stack)

it's not a perfect answer to your issue, but it might give you a starting point to addressing it somehow.

Offhand I'm not sure how to "fix" it automatically in the code. I will have to dive a bit deeper to figure out how the logging system does the lookups for things like line numbers. it might come down to adding another variable (like 'line_num" that takes this into account.