GoLand中需在运行配置的Logs区域勾选“Add timestamp to console output”,该选项位于右上角配置名→Edit Configurations→选中Go Application→右侧Logs区,仅对新启动进程生效。

GoLand 运行日志里怎么加时间戳?
默认情况下,GoLand 的 Run 窗口输出不带时间戳——这不是 Go 本身的问题,而是 IDE 的运行配置没启用日志前缀。你需要手动打开「Add timestamp to console output」开关,它藏在 Run Configuration 里,不是全局设置。
在哪里找这个时间戳开关?
打开当前运行配置(点击右上角的配置名 → Edit Configurations…),左侧选中你的 Go Application 配置,在右侧找到 Logs 区域(不是 Program arguments 或 Environment):
- 勾选
Add timestamp to console output - 注意:该选项只对新启动的进程生效,已运行的实例不会自动追加
- 如果没看到 Logs 区域,说明你用的是旧版 GoLand(go run -gcflags="-l" main.go + 外部终端调试
为什么有时候开了也没显示?
常见原因有三个:
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
-
fmt.Println()和log.Print()输出会被加上时间戳,但os.Stdout.Write()或直接调用系统 write syscall 的输出绕过 IDE 日志拦截,不触发时间戳 - 如果你用了
go test -v,IDE 默认不为测试输出加时间戳(即使勾选了),得额外在Go tool arguments里加-test.v -test.logtostderr并配合log.SetFlags(log.LstdFlags) - 某些插件(如 Delve 调试器直连终端)会跳过 IDE 的日志管道,此时时间戳失效
想让代码自己打时间戳怎么办?
如果 IDE 层控制不可靠,或者需要精确到毫秒/纳秒、区分不同 goroutine,就别依赖 IDE 开关,改用标准库 log:
log.SetFlags(log.Ldate | log.Ltime | log.Lmicroseconds | log.Lshortfile)
log.Println("hello") // 输出:2024/05/22 14:36:22.123456 main.go:12: hello
注意:log.SetFlags() 是全局生效的,且会覆盖 IDE 自动添加的时间戳格式——两者不要混用,否则出现双时间戳。
真正麻烦的是跨平台日志聚合场景:IDE 时间戳格式固定、不可定制;而 log 包的时间戳受 log.LUTC 和本地时区影响。选哪个,取决于你后续是否要解析日志文本。

















