V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
CzaOrz
V2EX  ›  Python

感觉 golang 的三方日志库 logrus 真的好方便啊....

  •  
  •   CzaOrz ·
    czasg · Nov 6, 2020 · 8109 views
    This topic created in 2002 days ago, the information mentioned may be changed or developed.

    golang 代码:

    package main
    
    import "github.com/sirupsen/logrus"
    
    func main() {
    	logrus.WithFields(logrus.Fields{"name": "cc"}).Info("hello")
    }
    

    输出:

    time="2020-11-06T14:50:17+08:00" level=info msg="hello" name=cc
    

    这段日志中可以看到,拆离出了各种结构化信息,以前都没这样想过...而且输出 json 也非常方便


    然后最近又有相关需求,python 项目的日志要输出 json...我...
    不禁又羡慕起logrus来...

    需求完成后,,抽空花了两天模仿写了个loggus(半天写完,改了一天半的 bug 囧)

    import loggus
    
    if __name__ == '__main__':
        loggus.WithFields({"name": "cc"}).Info("hello")
        
        loggus.SetFormatter(loggus.JsonFormatter)
        loggus.WithFields({"age": 18}).Info("world")
    

    输出:

    time="2020-11-06 14:54:15.416516" level=info msg=hello name=cc
    {"age": 18, "time": "2020-11-06 15:05:04.613234", "level": "info", "msg": "world"}
    

    等我找个内部项目试试水先,有大佬给点意见嘛,写的太简陋了...
    https://github.com/CzaOrz/loggus

    32 replies    2020-11-07 17:54:44 +08:00
    MadbookPro
        1
    MadbookPro  
       Nov 6, 2020   ❤️ 1
    确实方便好用,就是性能拉胯一些,最近想换了。。
    ynkkdev
        2
    ynkkdev  
       Nov 6, 2020   ❤️ 1
    ??? python 也有个叫做 loguru 的日志库,github7.4K 的 star,可以看看,python 一般不会出现少轮子的情况
    zzzbkl
        3
    zzzbkl  
       Nov 6, 2020 via Android   ❤️ 1
    没有原生支持日志文件 rotate,稍微有点不爽
    TypeErrorNone
        4
    TypeErrorNone  
       Nov 6, 2020   ❤️ 1
    推荐 zap
    xiaolinjia
        5
    xiaolinjia  
       Nov 6, 2020   ❤️ 2
    CzaOrz
        6
    CzaOrz  
    OP
       Nov 6, 2020
    loguru, 我 see see,好用就直接用了,哈哈
    fewok
        7
    fewok  
       Nov 6, 2020   ❤️ 4
    这怕是没用过 java 的日志库,什么 log4j 、logback 、log2j 。哪个不秒杀这些玩具
    eurry
        8
    eurry  
       Nov 6, 2020
    logrus 能打印 goroutine 的 id 吗
    xiaoqiao24
        9
    xiaoqiao24  
       Nov 6, 2020   ❤️ 1
    在不知道 loguru 之前一直用 logging 之后我就忘了什么是 logging 了
    axex
        10
    axex  
       Nov 6, 2020   ❤️ 1
    zap 玩法更多,比如直接劫持 go 的那个 std logger,或者把结构化的日志刷到 influxdb 中
    misaka19000
        11
    misaka19000  
       Nov 6, 2020   ❤️ 2
    golang 的日志也能吹一波我是没想到的。。。
    chendy
        12
    chendy  
       Nov 6, 2020   ❤️ 1
    是不是应该整个 log4go 啥的…
    ppphp
        13
    ppphp  
       Nov 6, 2020   ❤️ 1
    golang 遇到很多 interface 的时候性能就是很拉垮的
    CzaOrz
        14
    CzaOrz  
    OP
       Nov 6, 2020
    @misaka19000 这,,,只是刚好在用两种语言写项目,遇到一些问题而已,不具有其他意义==整体来说我还是喜欢 python 多些吧,,,
    CzaOrz
        15
    CzaOrz  
    OP
       Nov 6, 2020
    我 golang 接触不多,同事用的 logrus 多些,so,,,,感觉后续可以试试 zap,哈哈
    Pythondr
        16
    Pythondr  
       Nov 6, 2020   ❤️ 1
    zap 吧
    joesonw
        17
    joesonw  
       Nov 6, 2020
    @MadbookPro uber/zap 还可以
    joesonw
        18
    joesonw  
       Nov 6, 2020
    @eurry 哪个库都不行啊, goroutine 拿不到 id 的
    cz5424
        19
    cz5424  
       Nov 6, 2020 via iPhone
    Python 跟 sentry 连用,一个 error 把临时变量都会打出来
    okayan
        20
    okayan  
       Nov 6, 2020   ❤️ 1
    golang 有没有日志库可以做到类似 Java 那种,对特定的 package 指定 log level 的?

    现在引入了一些第三方库,调试时 log 开到 debug 级别,被第三方的 debug 日志刷屏了,从一大堆日志里找自己写的 debug 日志很揪心....
    ClericPy
        21
    ClericPy  
       Nov 6, 2020   ❤️ 1
    有多少人看到 loguru 主页那句 10x 性能了
    outoftimeerror
        22
    outoftimeerror  
       Nov 6, 2020
    这个项目几年前坑过我,当时 Logrus 突然换成了 logrus,害我线上 pipeline 老是失败
    hijoker
        23
    hijoker  
       Nov 6, 2020
    go 的日志库是几个语言里最挫的,没有之一
    xfs
        24
    xfs  
       Nov 6, 2020
    第一眼看到“golang”、“日志库”这种关键字第一反应是又有人吐槽了,结果仔细一看居然是夸的,哈哈哈哈
    Moker
        25
    Moker  
       Nov 6, 2020
    目前用的是 zerolog
    qxooqx
        26
    qxooqx  
       Nov 6, 2020 via Android
    当前用 zap,日志多的时候怀疑人生,求推荐一个能安模块分类的方法
    laminux29
        27
    laminux29  
       Nov 6, 2020
    世间任何事物都有两面性,方便的代价从来都是可定制性的降低,低可定制线意味着性能的不可控甚至降低。---鲁迅。
    aliipay
        28
    aliipay  
       Nov 6, 2020
    lrh3321
        29
    lrh3321  
       Nov 7, 2020 via Android
    就没其他和我一样用 klog 的吗
    troywinter
        30
    troywinter  
       Nov 7, 2020
    结构化日志,一直用 zap
    qloog
        31
    qloog  
       Nov 7, 2020
    一直在用 zap: https://github.com/1024casts/snake/tree/master/pkg/log 比较方便自定义,扩展性比较强。当然性能方面更优秀。
    ppphp
        32
    ppphp  
       Nov 7, 2020
    @lrh3321 prometheus 就是用的 klog 。。。反正主要看日志需不需要性能吧
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3064 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 169ms · UTC 00:05 · PVG 08:05 · LAX 17:05 · JFK 20:05
    ♥ Do have faith in what you're doing.