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
1
MadbookPro 2020-11-06 15:30:49 +08:00 1
确实方便好用,就是性能拉胯一些,最近想换了。。
|
2
youngce 2020-11-06 15:35:27 +08:00 1
??? python 也有个叫做 loguru 的日志库,github7.4K 的 star,可以看看,python 一般不会出现少轮子的情况
|
3
zzzbkl 2020-11-06 15:37:12 +08:00 via Android 1
没有原生支持日志文件 rotate,稍微有点不爽
|
4
TypeErrorNone 2020-11-06 15:38:43 +08:00 1
推荐 zap
|
5
xiaolinjia 2020-11-06 15:40:35 +08:00 2
|
6
CzaOrz OP loguru, 我 see see,好用就直接用了,哈哈
|
7
fewok 2020-11-06 16:05:31 +08:00 4
这怕是没用过 java 的日志库,什么 log4j 、logback 、log2j 。哪个不秒杀这些玩具
|
8
eurry 2020-11-06 16:16:36 +08:00
logrus 能打印 goroutine 的 id 吗
|
9
xiaoqiao24 2020-11-06 17:15:19 +08:00 1
在不知道 loguru 之前一直用 logging 之后我就忘了什么是 logging 了
|
10
axex 2020-11-06 17:24:52 +08:00 1
zap 玩法更多,比如直接劫持 go 的那个 std logger,或者把结构化的日志刷到 influxdb 中
|
11
misaka19000 2020-11-06 17:25:02 +08:00 2
golang 的日志也能吹一波我是没想到的。。。
|
12
chendy 2020-11-06 17:29:01 +08:00 1
是不是应该整个 log4go 啥的…
|
13
ppphp 2020-11-06 17:30:43 +08:00 1
golang 遇到很多 interface 的时候性能就是很拉垮的
|
14
CzaOrz OP @misaka19000 这,,,只是刚好在用两种语言写项目,遇到一些问题而已,不具有其他意义==整体来说我还是喜欢 python 多些吧,,,
|
15
CzaOrz OP 我 golang 接触不多,同事用的 logrus 多些,so,,,,感觉后续可以试试 zap,哈哈
|
16
Pythondr 2020-11-06 17:54:57 +08:00 1
zap 吧
|
17
joesonw 2020-11-06 17:57:55 +08:00
@MadbookPro uber/zap 还可以
|
19
cz5424 2020-11-06 18:56:14 +08:00 via iPhone
Python 跟 sentry 连用,一个 error 把临时变量都会打出来
|
20
okayan 2020-11-06 19:21:11 +08:00 1
golang 有没有日志库可以做到类似 Java 那种,对特定的 package 指定 log level 的?
现在引入了一些第三方库,调试时 log 开到 debug 级别,被第三方的 debug 日志刷屏了,从一大堆日志里找自己写的 debug 日志很揪心.... |
21
ClericPy 2020-11-06 20:39:43 +08:00 1
有多少人看到 loguru 主页那句 10x 性能了
|
22
outoftimeerror 2020-11-06 20:44:34 +08:00
这个项目几年前坑过我,当时 Logrus 突然换成了 logrus,害我线上 pipeline 老是失败
|
23
hijoker 2020-11-06 21:03:15 +08:00
go 的日志库是几个语言里最挫的,没有之一
|
24
xfs 2020-11-06 21:23:14 +08:00
第一眼看到“golang”、“日志库”这种关键字第一反应是又有人吐槽了,结果仔细一看居然是夸的,哈哈哈哈
|
25
Moker 2020-11-06 21:26:14 +08:00
目前用的是 zerolog
|
26
qxooqx 2020-11-06 22:01:25 +08:00 via Android
当前用 zap,日志多的时候怀疑人生,求推荐一个能安模块分类的方法
|
27
laminux29 2020-11-06 22:28:09 +08:00
世间任何事物都有两面性,方便的代价从来都是可定制性的降低,低可定制线意味着性能的不可控甚至降低。---鲁迅。
|
28
aliipay 2020-11-06 22:36:15 +08:00
|
29
lrh3321 2020-11-07 07:13:22 +08:00 via Android
就没其他和我一样用 klog 的吗
|
30
troywinter 2020-11-07 12:39:40 +08:00
结构化日志,一直用 zap
|
31
qloog 2020-11-07 15:01:14 +08:00
一直在用 zap: https://github.com/1024casts/snake/tree/master/pkg/log 比较方便自定义,扩展性比较强。当然性能方面更优秀。
|