Golang的log包哪个好用?

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

共 29 个回复


stevewang

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

# 0

16779242

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

# 1

icecools

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

# 2

stevewang

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

# 3

icecools

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

# 4

writethesky

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

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

# 5

jimmykuu

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

# 6

stevewang

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

# 7

writethesky

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

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

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

用的这个

github.com/bitly/go-simplejson/

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

# 8

seefan

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

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

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

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

# 9

cnjack

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

# 10

icecools

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

# 11

xnotepad

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

# 12

xue777hua

用seelog吧。

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

# 13

qinzhu0

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

https://github.com/cxr29/log

# 14

luxor

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

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

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

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

# 15

gvforjob

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

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

# 17

zhangzhonglin

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

# 19

axengine

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

# 21

xiaomi_tc

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

# 23

xnotepad

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

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

# 24

cumt_21g

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

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

kuxuee

我自己改了个轮子
https://github.com/kuxuee/logger
支持一个logger同时向console,文件记录
打印所在文件和行号
文件达到设定大小后自动切片

# 28