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

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