/images/avatar.webp

五岁博客

golang 获取调用者的方法名及所在源码行数

一、为什么需要获取调用者信息?

可能有人会问:“直接看代码行数不就行了,为什么要动态获取?” 其实在实际开发中,调用者信息的动态获取有很多关键场景:

  • 日志定位:在通用日志工具中打印调用者方法名和行数,比如封装一个 LogInfo 函数,无论在哪个方法中调用,都能自动标注来源,调试时不用再逐行找日志位置;

go 如何打印错误时代码堆栈信息(使用库 pkg error 包)

背景

刚接手Go项目时,遇到过一次生产环境报错——日志只打印“查询用户失败”,没有任何调用链路信息。

翻了半天代码才定位到是数据库查询的子函数抛错。

打印错误 error 日志时,仅有错误信息,没有错误代码的堆栈信息,这在问题排查上比较困难,具体代码如下