原 Java 刚学习 go, 自己在写项目, 针对 go 日志方面的疑惑

56 天前
 BenHunDun

在自己写一个 demo 项目的时候, go 中好像没有 Java 中的 SLF4J 这样统一的日志接口. 在碰到引用第三方的包(像 viper)中使用的日志, 这样日志是不是就是分散的.

2725 次点击
所在节点    Go 编程语言
18 条回复
totoro52
56 天前
go 的日志一直是个大问题
Ayanokouji
56 天前
go 的 log 和 error ,一言难尽,只能多体会,没有统一解决方案
javalaw2010
56 天前
一般完善一点的库都有设置 logger 的接口,你可以用自己喜欢的 log 库,实现别人的接口然后 set 进去。
go 的标准库其实提供了统一的 logger 接口和实现 slog ,但是历史遗留比较多,很多人不愿意用。

go 本身语言特性不是很丰富,所以写代码讲究一个随心所欲,快糙猛就是干,宗旨就是能跑就行。
BenHunDun
56 天前
@Ayanokouji @totoro52
因为没有接触过实际项目, 这样的话, 是不是在实际开发时, 第三方包如果没有出问题, 并不会过多的去关注第三方包的 log
Ayanokouji
56 天前
@BenHunDun 完全不关注,而且一些 lib 压根就没有日志,你要关心的可能就是 web 框架的日志
totoro52
56 天前
@BenHunDun 正规的包大部分不会输出 log 的,除非是成型的第三方组件的,反正百花齐放就对了
BenHunDun
56 天前
很感谢回答, 自己再自身多感受 go 中 log 使用
tairan2006
56 天前
你现在的话就用 slog 完事

但是之前有很多第三方 log 库,就比较乱
lekai63
56 天前
go 自己的 log 够用,但又似乎没那么好用。—— 也许是我不会用

反正还是用 viper 吧
sthwrong
56 天前
标准库已经有了 slog ,相对比较通用的第三方也有 zap ,有日志需求的库一般也有 logger 接口也可以根据需求传入自己的 logger 。
lekai63
56 天前
@sthwrong

感谢!原来有 slog 了。。我实在太更不上时代了。。只用上了 ServeMUX 。 之前完全不知道 slog 原来都出来一年多了 !
lizhisty
56 天前
用 zap 吧
CapNemo
56 天前
确实是大坑,每个库的 logger 接口都不太一致,需要分别兼容。
pkoukk
56 天前
大部分库都不产生 log ,因为有啥问题 error 就丢给你了,让你自己打
部分 db 或者 web 框架需要你适配个 logger interface 丢进去,比较麻烦,不过好在就只用写一次,以后直接搬就好了
BenHunDun
56 天前
@tairan2006 @lekai63 @sthwrong
有搜索到 slog 和 zap, 后续会多去了解.

@pkoukk
认真想 Java 其实也是用这种方法解决, 很多都是有另外的包转成 SLF4J , 然后再统一使用日志实现.
Java 常用的内容生态已经成熟了, 用习惯了没有能够反应过来.

简单询问 AI 好像 zap 是想要找的东西. 后面学习差不多了, 仔细了解一下.
xjzshttps
56 天前
go 官方最开始提供的日志接口太烂了,根本没人用。
然后就百花齐放的出了很多第三方日志库。

现在 go 官方出了标准的日志接口 slog ,但是太晚了,普及起来感觉会很慢。

我跟人建议,新项目就按照 slog 接口,底层自己用 zap 之类的库。
xxxccc
55 天前
golang logger 是我学 golang 的时候遇到最恶心的东西,尤其各种第三方 client ,一人一个 logger 接口
ipwx
55 天前
1. go 的几个主要日志库都可以互相套娃做 sink
2. go 库不太喜欢乱写日志,常见的是乱扔 error 。不过你可以用 errorx 把别人的 error 包一层,保留上下文信息方便调试。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://yangjunhui.monster/t/1118406

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX