
在自己写一个 demo 项目的时候, go 中好像没有 Java 中的 SLF4J 这样统一的日志接口. 在碰到引用第三方的包(像 viper)中使用的日志, 这样日志是不是就是分散的.
1 MIUIOS 2025 年 3 月 14 日 go 的日志一直是个大问题 |
2 Ayanokouji 2025 年 3 月 14 日 go 的 log 和 error ,一言难尽,只能多体会,没有统一解决方案 |
3 javalaw2010 2025 年 3 月 14 日 一般完善一点的库都有设置 logger 的接口,你可以用自己喜欢的 log 库,实现别人的接口然后 set 进去。 go 的标准库其实提供了统一的 logger 接口和实现 slog ,但是历史遗留比较多,很多人不愿意用。 go 本身语言特性不是很丰富,所以写代码讲究一个随心所欲,快糙猛就是干,宗旨就是能跑就行。 |
4 BenHunDun OP |
5 Ayanokouji 2025 年 3 月 14 日 @BenHunDun 完全不关注,而且一些 lib 压根就没有日志,你要关心的可能就是 web 框架的日志 |
7 BenHunDun OP 很感谢回答, 自己再自身多感受 go 中 log 使用 |
8 tairan2006 2025 年 3 月 14 日 via Android 你现在的话就用 slog 完事 但是之前有很多第三方 log 库,就比较乱 |
9 lekai63 2025 年 3 月 14 日 go 自己的 log 够用,但又似乎没那么好用。 也许是我不会用 反正还是用 viper 吧 |
10 sthwrong 2025 年 3 月 14 日 标准库已经有了 slog ,相对比较通用的第三方也有 zap ,有日志需求的库一般也有 logger 接口也可以根据需求传入自己的 logger 。 |
11 lekai63 2025 年 3 月 14 日 |
12 lizhisty 2025 年 3 月 14 日 用 zap 吧 |
13 CapNemo 2025 年 3 月 14 日 确实是大坑,每个库的 logger 接口都不太一致,需要分别兼容。 |
14 pkoukk 2025 年 3 月 14 日 大部分库都不产生 log ,因为有啥问题 error 就丢给你了,让你自己打 部分 db 或者 web 框架需要你适配个 logger interface 丢进去,比较麻烦,不过好在就只用写一次,以后直接搬就好了 |
15 BenHunDun OP @tairan2006 @lekai63 @sthwrong 有搜索到 slog 和 zap, 后续会多去了解. @pkoukk 认真想 Java 其实也是用这种方法解决, 很多都是有另外的包转成 SLF4J , 然后再统一使用日志实现. Java 常用的内容生态已经成熟了, 用习惯了没有能够反应过来. 简单询问 AI 好像 zap 是想要找的东西. 后面学习差不多了, 仔细了解一下. |
16 xjzshttps 2025 年 3 月 14 日 go 官方最开始提供的日志接口太烂了,根本没人用。 然后就百花齐放的出了很多第三方日志库。 现在 go 官方出了标准的日志接口 slog ,但是太晚了,普及起来感觉会很慢。 我跟人建议,新项目就按照 slog 接口,底层自己用 zap 之类的库。 |
17 xxxccc 2025 年 3 月 14 日 golang logger 是我学 golang 的时候遇到最恶心的东西,尤其各种第三方 client ,一人一个 logger 接口 |
18 ipwx 2025 年 3 月 14 日 1. go 的几个主要日志库都可以互相套娃做 sink 2. go 库不太喜欢乱写日志,常见的是乱扔 error 。不过你可以用 errorx 把别人的 error 包一层,保留上下文信息方便调试。 |