原 Java 刚学习 go, 自己在写项目, 针对 go 日志方面的疑惑 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
BenHunDun
V2EX    Go 编程语言

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

  •  
  •   BenHunDun 211 天前 3108 次点击
    这是一个创建于 211 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    18 条回复    2025-03-14 23:08:56 +08:00
    MIUIOS
        1
    MIUIOS  
       211 天前
    go 的日志一直是个大问题
    Ayanokouji
        2
    Ayanokouji  
       211 天前
    go 的 log 和 error ,一言难尽,只能多体会,没有统一解决方案
    javalaw2010
        3
    javalaw2010  
       211 天前   2
    一般完善一点的库都有设置 logger 的接口,你可以用自己喜欢的 log 库,实现别人的接口然后 set 进去。
    go 的标准库其实提供了统一的 logger 接口和实现 slog ,但是历史遗留比较多,很多人不愿意用。

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

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

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

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

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

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

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

    我跟人建议,新项目就按照 slog 接口,底层自己用 zap 之类的库。
    xxxccc
        17
    xxxccc  
       211 天前
    golang logger 是我学 golang 的时候遇到最恶心的东西,尤其各种第三方 client ,一人一个 logger 接口
    ipwx
        18
    ipwx  
       211 天前
    1. go 的几个主要日志库都可以互相套娃做 sink
    2. go 库不太喜欢乱写日志,常见的是乱扔 error 。不过你可以用 errorx 把别人的 error 包一层,保留上下文信息方便调试。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1221 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 17:25 PVG 01:25 LAX 10:25 JFK 13:25
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86