一般完善一点的库都有设置 logger 的接口,你可以用自己喜欢的 log 库,实现别人的接口然后 set 进去。go 的标准库其实提供了统一的 logger 接口和实现 slog ,但是历史遗留比较多,很多人不愿意用。go 本身语言特性不是很丰富,所以写代码讲究一个随心所欲,快糙猛就是干,宗旨就是能跑就行。
大部分库都不产生 log ,因为有啥问题 error 就丢给你了,让你自己打部分 db 或者 web 框架需要你适配个 logger interface 丢进去,比较麻烦,不过好在就只用写一次,以后直接搬就好了
有搜索到 slog 和 zap, 后续会多去了解.认真想 J**a 其实也是用这种方法解决, 很多都是有另外的包转成 SLF4J , 然后再统一使用日志实现.J**a 常用的内容生态已经成熟了, 用习惯了没有能够反应过来.简单询问 AI 好像 zap 是想要找的东西. 后面学习差不多了, 仔细了解一下.
go 官方最开始提供的日志接口太烂了,根本没人用。然后就百花齐放的出了很多第三方日志库。现在 go 官方出了标准的日志接口 slog ,但是太晚了,普及起来感觉会很慢。我跟人建议,新项目就按照 slog 接口,底层自己用 zap 之类的库。