go-stack/stack
GitHub: go-stack/stack
一个 Go 语言库,用于简化调用堆栈的捕获、操作和格式化,比标准库 runtime 包提供更易用的 API。
Stars: 405 | Forks: 35
[](https://godoc.org/github.com/go-stack/stack)
[](https://goreportcard.com/report/go-stack/stack)
[](https://travis-ci.org/go-stack/stack)
[](https://coveralls.io/github/go-stack/stack?branch=master)
# 栈
stack 包实现了用于捕获、操作和格式化调用堆栈的工具。它提供了比 runtime 包更简单的 API。
该实现处理了由 runtime.Callers 返回的程序计数器 (pc) 值在解析时的细节和特殊情况。
## 版本控制
stack 包通过兼容 [semver](http://semver.org/) 且带有 'v' 前缀的 Git 标签发布版本。master 分支始终包含最新的发布版本。develop 分支包含尚未发布的提交。
## 格式化
stack 包的类型实现了 fmt.Formatter,这在与日志记录或错误追踪包配合使用时,提供了一种简单且灵活的方式来声明式地配置格式化。
```
func DoTheThing() {
c := stack.Caller(0)
log.Print(c) // "source.go:10"
log.Printf("%+v", c) // "pkg/path/source.go:10"
log.Printf("%n", c) // "DoTheThing"
s := stack.Trace().TrimRuntime()
log.Print(s) // "[source.go:15 caller.go:42 main.go:14]"
}
```
请查阅文档以了解所有支持的格式化选项。
标签:EVTX分析, Go, Ruby工具, 开发工具库, 日志审计, 日志辅助, 格式化输出, 调用栈, 运行时调试