/images/avatar.webp

五岁博客

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

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

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

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

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

背景

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

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

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

Go 程序如何优雅退出?实战方法与代码示例

一、为什么需要优雅退出?

很多人觉得“程序退出就是停掉进程”,但对后端服务来说,粗暴退出会引发一系列问题。在生产环境中,“怎么退出”直接影响系统稳定性。

简单来说,优雅退出是指程序在收到退出信号后,不立即终止,而是先完成一系列准备工作再安全退出,核心要做这几件事: