GoLand中测试失败日志默认输出在「Run」工具窗口底部面板,不加-v仅显示失败摘要,加-v才展开t.Log和完整堆栈;t.Log自带文件行号支持Ctrl+Click跳转,log.Printf则无此功能。

GoLand里测试失败时日志默认输出在哪
GoLand运行go test时,所有输出(包括t.Log、fmt.Println、失败堆栈)都直接打印在「Run」工具窗口底部面板,不是单独文件。不加-v参数时,只有失败摘要;加了-v才会展开每条t.Log和实际报错行号。
为什么有些日志看不到?常见漏点
以下情况会导致你“以为没日志”,其实是被过滤或未触发:
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
-
t.Log内容只在测试失败或显式加-v时显示,log.Printf会始终输出但可能干扰判断,建议统一用t.Log - 用了
testify/assert却没配assert.Msg或换require,失败堆栈指向库内部而非你的代码行 - 测试函数里有
panic但没recover,GoLand默认截断堆栈,需手动点「Show full stack trace」展开 - GoLand的「Run with coverage」模式有时会吞掉部分
t.Log,换普通「Run Test」更可靠
如何让错误定位更快
GoLand本身不生成额外日志文件,但你可以主动控制输出结构:
- 在测试函数开头加
t.Logf("input: %+v", args),确保关键变量可见 - 把
go test -v -run=TestParseConfig写进GoLand的「Edit Configurations → Program arguments」,避免每次手输 - 右键点击失败测试名 → 「Debug」,断点可停在
t.Errorf前一行,直接看变量值 - 如果用
zap或logrus打日志,记得调用logger.Sync(),否则最后一段可能丢失
日志里没有文件行号?立刻检查这个设置
标准log包默认不带位置信息,但t.Log自带——这是GoLand能跳转到源码的关键。如果你在测试里混用了log.Println,它不会高亮跳转。必须改用t.Log或t.Errorf,它们的输出GoLand才能解析出file:line并支持Ctrl+Click跳转。
go test -v 2>&1 | tee test.log。别等报错后再找——日志只活在当前会话里。

















