Golang 中国

我看了一下说是自带的那个log功能比较简单,那么大家都是用哪个log包的?log4go还是啥?

28 回复
stevewang
#1 stevewang • 2014-10-20 09:26

标准库的log基本上够用了吧。

16779242
#2 16779242 • 2014-10-20 09:54

一直都在用官方标准库,表示完全够用啊

icecools
#3 icecools • 2014-10-20 16:02

我大概要那么几个功能,log到文件,可以分级,可以配置(比如命令行或者配置文件选为release,那么Info的就不log出来),log文件大小到一定程度创建新文件(不然太慢了)。试了一下glog, 感觉还是不太给力。。。而且那个V()的用法还没搞太明白。。。

stevewang
#4 stevewang • 2014-10-20 17:29

你说的这些功能,通过给Logger设置自己实现的Writer就可以实现。 对于简单的功能,我宁愿自己写一些代码实现,用第三方库会增加不必要的复杂度而给代码质量带来隐患。 为什么说log文件大会慢呢?又不会把文件所有内容都放在内存里。

icecools
#5 icecools • 2014-10-21 08:03

试了一下glog不好用,现在用了log4go还行,比较简单,也容易配置... 啥都自己写的话就有点麻烦,有现成成熟的库还是用现成的比较好

writethesky
#6 writethesky • 2014-10-21 15:04

一般复杂的东西用别人写的库是挺好的,比如go操作json自己写太麻烦了,就算真自己写,也得写个包。

像log这个觉得标准库足够了

jimmykuu
#7 jimmykuu • 2014-10-21 23:44

json不是有内置库的么?用哪个第三方包?

stevewang
#8 stevewang • 2014-10-22 02:30

为什么说go操作json很麻烦?

writethesky
#9 writethesky • 2014-10-22 04:10

确切的说应该是go从json里面取数据比较麻烦吧,

要么就是各种断言,要么就是用switch把所有的数据类型遍历一遍,

因为有些json层数特别多,里面的数据结构也很复杂

用的这个

github.com/bitly/go-simplejson/

不知道这个写的好不好,估计也就是用的switch

seefan
#10 seefan • 2014-10-22 14:51

建议你还是不要用log4go,我前段时间用过,在log密集写的时候会有一些内容莫名的就丢掉了,如果是关键日志,你就死定了,根本找不到原因。

现在用seelog,也不太好,对付用。主要问题在window下运行时会有输出不正常的情况。主要是一些format的串显示不正常,在mac没问题,linux没测。

还是原装的log好,但还得自己分文件,太麻烦。

目前看,还没有一个我完全满意的。

cnjack
#11 cnjack • 2014-10-23 02:02

log包用过,,貌似不太知道怎么用,调取*Log.Logger在另外一个func里面总是写不了

icecools
#12 icecools • 2014-10-23 04:50

哦,谢谢seefan, 我那个只有debug的log写的比较频繁,但是不是很重要,别的log也都还好,现在一秒钟几条而已,估计还不至于出错。先用着,也没有更好用的了。感觉go的周边还是有很多东西没成熟起来。

xnotepad
#13 xnotepad • 2014-10-23 06:00

一般都是自定义个io.Writer实现一些文件分割的功能,然后用标准库的log包。

xue777hua
#14 xue777hua • 2015-07-21 08:41

用seelog吧。

glog只能debug绝逼不能用生产
glog + logrotate会丢log
log4go丢log绝逼严重。。。
logrus 甚至连行号都不打印!?要这样的log工具何用?

qinzhu0
#15 qinzhu0 • 2015-07-22 05:37

发一个自己日常和工作中用的log包,封装标准库增加Level和Rotate功能,代码不多,直接看代码吧。

https://github.com/cxr29/log

luxor
#16 luxor • 2015-07-22 11:41

推荐我们生产环境正在使用的库,基于logrus修改
https://github.com/gogap/logrus

可以配置输出到文件和graylog日志系统

基础的level、调用链、行号,文件切分都有

特色是结构化日志可以被统计和索引,借助graylog就可以做日志分析

someonegg
#17 someonegg • 2016-05-11 10:25

我们线上用的库,纯粹结构化的logger
https://github.com/someonegg/golog

gvforjob
#18 gvforjob • 2016-05-25 09:38

@stevewang 标准库的log基本上够用了吧。

这个,标准的logger只用print,fatal,panic几个API,用它做日志分级觉得还是有点不太方便

nuokesasi
#19 nuokesasi • 2016-05-25 22:31

https://github.com/gogap/logrus
这个用起来还不错

zhangzhonglin
#20 zhangzhonglin • 2016-05-26 13:04

“github.com/ngaut/log”
这个不错,刁刁的,相当留B

knift
#21 knift • 2016-05-27 07:01

https://github.com/inconshreveable/log15
可以试试这个,还可以。

json的话simplejson也不能解决问题,静态语言作这类解析就是麻烦,好用点的是
https://github.com/ChimeraCoder/gojson
自己生成对应结构

axengine
#22 axengine • 2016-12-23 01:38

一直用的seelog,功能强大,用起来也很简单省事。最近出现fatal error,准备换glog

ccpaging
#23 ccpaging • 2017-07-15 15:48

正在做log4go……

https://github.com/ccpaging/log4go

xiaomi_tc
#24 xiaomi_tc • 2017-09-26 07:52

根据 log15改的一个库:
https://githua.com/xiaomi-tc/log15
主要是针对文件型日志,加了:
设置、过滤日志等级输出;
根据日志大小自动轮滚,可以设置轮滚参数
提供程序中控制轮滚的函数

xnotepad
#25 xnotepad • 2017-09-30 05:54

可以试一下 https://github.com/issue9/logs
我们一直用这个,目前还没发现什么问题。

基于标准库的 log.Logger,提供了分级输出、文件分割、发送邮件等不同的功能,还可以根据自己的需求写不同的扩展。
基于 XML 配置文件,可以在不改变源码的情况下,修改日志的输出信息。基本上够用了。

xiexievv
#26 xiexievv • 2017-10-27 02:41

seelog

cumt_21g
#27 cumt_21g • 2017-11-15 16:56

妈蛋,整个go社区就没有一个正常的日志库?

  1. 一个logger同时向console,文件记录
  2. 打印所在文件和行号
  3. 切片
  4. 简单的输出格式的定义方式
    太特么惨了
aapeli
#28 aapeli • 2018-12-10 12:29

强行安利一波

https://github.com/go-fastlog/fastlog

fastlog 基于官方log 包二次开发,支持日志分级,短小强悍,你会喜欢的。

需要 登录 后方可回复, 如果你还没有账号你可以 注册 一个帐号。