丰富你的日志信息:从Python调用堆栈获取行号等信息

本文介绍了如何在Python中获取调用堆栈信息,包括文件名、行号和上层调用者。推荐使用inspect模块,特别是inspect.currentframe方法,它能返回调用堆栈顶部的帧。文章提供了具体使用示例,并指出inspect.currentframe与sys._getframe等效。此外,文章还提到了相关学习资源和作者的个人经历。
摘要由CSDN通过智能技术生成

程序中的日志打印,或者消息上传,比如kafka消息等等。经常上传的消息中需要上传堆栈信息中的文件名、行号、上层调用者等具体用于定位的消息。Python提供了以下两种方法:

  • sys._getframe, 基础方法
  • inspect.currentframe, 推荐方法,提供除了sys._getframe方法之外更多的frame相关的方法

具体使用如下

使用sys._getframe私有方法

具体使用方法如下:

import os
import sys


def get_cur_info():
    """
        获取调用时的文件名,行号,上层调用者的名称
        :return: 文件名,行号,上层调用者名称
    """
    try:
        current_frame = sys._getframe(2)
        return os.path.basename(current_frame.f_code.co_filename), current_frame.f_lineno, current_frame.f_code.co_name
    except ValueError:
        return 'unknown', 0, 'unknown'

具体的函数输出结果演示可以参见下面的inspect模块结果

使用inspect模块(推荐)

相比于

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值