函数如何从运行时建立以下详细信息,以便它可以将错误报告作为错误库的一部分进行编写,以便在许多产品中使用(我们正在转换为golang):
我希望能够检索这两个以扩充我可以报告的各种文件修订号以及一些堆栈跟踪信息
有用的相关但偏离主题的信息:
- 您可以从运行时获取堆栈跟踪,如此处所示http://technosophos.com/2014/03/19/generating-stack-traces-in-go.html
- 反射包http://golang.org/pkg/reflect/可用于检查已识别的功能
感谢您的协助,
理查德
答案 0 :(得分:5)
在构建时,可以使用-X链接器标志设置字符串变量的值:
go build -ldflags "-X main.Uname '$(uname -a)' -X main.CompileTime '$(date)'"
使用这样的命令,这段代码
package main
import "fmt"
// Set by the linker.
var CompileTime, Uname string
func main() {
fmt.Println(Uname)
fmt.Println(CompileTime)
}
将打印类似
的内容Linux user 3.13.0-53 Wed May 20 10:34:39 UTC 2015 x86_64 GNU/Linux
Wed May 27 12:00:00 UTC 2015
有关详细信息,请参阅linker docs。