英文:
(Golang) How to restrict ammount of command line output
问题
在执行某个 Golang 应用程序时,当发生 panic 时,命令行的显示被错误消息淹没了。假设有很多 goroutine 在运行,这种情况可能会发生。
然而,我只想知道输出的前几行信息。我该如何限制我想要的这个功能呢?
谢谢。
Harry
英文:
During executing something golang application, display of command line is overflowed by error messages
when something panic occured.
Provided there were lots of goroutine running, it could'be appeared.
However, information I want to know is just a few lines from top of output.
How can I restrict that feature I desire?
Thank you.
Harry
答案1
得分: 3
两种解决方案值得考虑。你可以选择适合你的方法。
- Panicparse
Marc-Antoine Ruel是一位出色的开发者,他创建了Panicparse。运行你的程序,将stderr赋值给stdout,将其导入panicparse,然后你就可以开始使用了。
go run example.go 2>&1 | pp
Panicparse将对输出进行去重和精简,使其可读性大大提高。
请在README中查看屏幕截图。
- Head
如果你要查找的信息总是在堆栈跟踪的顶部,那么可能只需要将输出导入head即可。
我们希望运行程序,让它像正常情况下输出到stdout/终端,但我们希望使用head来限制panic显示的信息量。请记住,panic是写入stderr的。因此,在大多数系统上,将stderr导入到进程替换中应该可以工作:
go run example.go 2> >(head)
英文:
Two solutions come to mind. You can pick what works for you.
- Panicparse
Marc-Antoine Ruel -- fantastic developer -- created panicparse. Run your program, assign stderr to stdout, pipe that into panicparse, and you're good to go.
go run example.go 2>&1 | pp
Panicparse will deduplicate and dedensify the output >50% while also making it far more readable.
Check out the screenshots in the README.
- Head
If the information you're looking for is always at the top of the stacktrace, then maybe it's just a simple case of piping the output to head.
We want to run our program; allowing it to output to stdout/terminal like normal, but we want to limit the amount of information the panic displays with head. Remember, panics are written to stderr. So piping stderr to a process substitution should work on most systems:
go run example.go 2> >(head)
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论