This topic created in 1579 days ago, the information mentioned may be changed or developed.
目前我已知的方法有以下几种:
1. 标准库的 log 包设置 Llongfile ,打日志的时候能够定位到代码行
2. 使用一些特殊字段,能够唯一标记这个日志是哪个函数的哪一行,比如用 函数名+具体 的方式
3. panic 然后 recover ,再打印堆栈
18 replies • 2022-07-18 03:30:18 +08:00
 |
|
只要这个程序(或 docker container )能在本机上跑得起来,我一定会首先尝试 dlv
|
 |
|
可以用下 sentry
|
 |
|
报错信息搜代码?
|
 |
|
所有请求都短暂保存 干啥就不能本地复现了?
|
 |
|
使用带堆栈信息的第三方 error 包,比如 GoFrame 框架的 gerror
|
 |
|
go 这么多 if err != nil , 都报错了,还不能定位问题?
|
 |
|
有链路追踪,然后接口响应里,会返回错误堆栈信息,直接显示哪一行什么错。
|
 |
|
根据 Go 官方统计,用 fmt.Println 的人最多。
|
 |
|
src/net/http/server.go 里面加上一个 fmt 就好了,一般情况 server 是没有异常,都是应用错误;应用错误 recover 加上堆栈输出就有了。
|
 |
|
Trim21Jul 18, 2022 via Android
17
每一层返回错误的时候都要用 fmt.Errorf 包一下,要么就在最底层用带 trackback 的 GitHub/pkg/errors 包 Wrap 一下。
|
 |
|
Trim21Jul 18, 2022 via Android
18
|