我在python中编写了一些自定义日志记录代码。我想查找调用我的日志记录功能的函数的行号和文件名,同时忽略当前模块中的任何调用。
我的第一次尝试看起来像这样:
def _make_line_log_message(self, level, message):
stack = inspect.stack()
for frame_record in stack:
frame, filename, line, function, src_context, src_context_line = frame_record
if filename == __file__: # This doesn't work
continue
do_my_logging(filename, line, message)
break
但inspect.stack()
的文件名使用文件的完整路径,而__file__
只是没有路径的文件名。如何获取当前文件的文件名以使其与inspect.stack()
匹配? os.path.realpath(__file__)
总是与inspect.stack()
的文件名格式完全匹配,还是有更好的方法?