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

2020-11-06 15:22:13 +08:00
 CzaOrz

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

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

现在引入了一些第三方库,调试时 log 开到 debug 级别,被第三方的 debug 日志刷屏了,从一大堆日志里找自己写的 debug 日志很揪心....

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

https://www.v2ex.com/t/722417

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

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

© 2021 V2EX