go-stack/stack

GitHub: go-stack/stack

一个 Go 语言库,用于简化调用堆栈的捕获、操作和格式化,比标准库 runtime 包提供更易用的 API。

Stars: 405 | Forks: 35

[![GoDoc](https://godoc.org/github.com/go-stack/stack?status.svg)](https://godoc.org/github.com/go-stack/stack) [![Go Report Card](https://goreportcard.com/badge/go-stack/stack)](https://goreportcard.com/report/go-stack/stack) [![TravisCI](https://travis-ci.org/go-stack/stack.svg?branch=master)](https://travis-ci.org/go-stack/stack) [![Coverage Status](https://coveralls.io/repos/github/go-stack/stack/badge.svg?branch=master)](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工具, 开发工具库, 日志审计, 日志辅助, 格式化输出, 调用栈, 运行时调试