通八洲科技

如何使用Go日志输出error信息_Go日志Error记录最佳实践

日期:2025-12-16 00:00 / 作者:P粉602998670
Go标准库log包不区分日志级别,有效error日志关键在于可定位、可追溯、含上下文、保错误链;推荐用log.Printf("[ERROR] %v", err)格式,避免log.Println(err)或滥用log.Fatal;需区分预期错误(warn/info)与异常错误(error),并优先采用结构化日志输出error字段。

Go标准库的log包本身不区分日志级别(如debug、info、error),但记录错误信息时,关键不是“打上error标签”,而是确保错误可定位、可追溯、含上下文、不丢失原始错误链。真正有效的error日志,核心在于怎么记录,而不是用哪个函数名。

用log.Printf或log.Print + 显式前缀标记error

标准log包没有log.Error,但你可以用log.Printf加统一前缀,让error日志在文本中一眼可辨:

永远记录错误发生的位置和上下文

只记"failed to parse JSON"没用。要回答:谁调的?在哪发生的?输入是什么?

区分“预期错误”和“异常panic”

不是所有err != nil都要当严重错误日志。I/O超时、用户参数错误、404等是业务流程一部分,应记录为warn或info;而数据库连接突然断开、配置加载失败、nil指针解引用才该标为error。

结构化日志 + 错误字段是进阶刚需

纯文本日志查错慢。现代服务推荐结构化日志(JSON格式),尤其把error作为独立字段输出:

基本上就这些。不复杂,但容易忽略上下文和结构化——一次清晰的error日志,往往比五次模糊的print节省半天排障时间。