如何在此文件外获取第一个堆栈帧

时间:2014-12-09 22:17:16

标签: python path stack-trace

我在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()的文件名格式完全匹配,还是有更好的方法?

0 个答案:

没有答案