剔除Go编译文件的GOPATH信息
https://www.yryz.net/post/trim-gopath-when-panic-or-showstack.html
当你panic,或者通过 runtime.Caller(0) 获取当前出错的文件位置作为日志记录时,会暴露你当时编译的项目路径、账户,下面这样可能并不是你想看到的。
panic: oh! no!
goroutine 1 [running]:
main.main()
/Users/jerry/go/src/demo/panic_demo/main.go:10 +0x64
我们通过静态分析编译后的二进制 strings panic_demo | grep /Users 得到:
/Users/jerry/go/src/demo/panic_demo/main.go
/Users/jerry/go/src/demo/panic_demo/main.go
/Users/jerry/go/src/demo/panic_demo
经过我们处理后可以剔除此信息。
解决方式
go build -gcflags=-trimpath=$GOPATH -asmflags=-trimpath=$GOPATH
更彻底的方式
go build -gcflags=-trimpath=$GOPATH -asmflags=-trimpath=$GOPATH -ldflags "-w -s"
最终干净了,也不影响正常的堆栈信息。
panic: oh! no!
goroutine 1 [running]:
main.main()
src/demo/myssl_demo/getcert_demo.go:10 +0x64
ft_authoradmin ft_create_time2017-10-14 17:17
ft_update_time2017-10-29 14:42
ft_update_time2017-10-29 14:42