golang的原生日志模块不能满足需求,而开源的第三方包,也不完全够用。用户较多的logrus,却没有rotate功能,这已经是众所周知的。对于运维来说,当然是希望日志的处理中比较简单、实用、够用。不需要额外的通过系统来实现logrotate。

1、需求

从需求方面来说,主要有几个方面: (推荐学习:go)

一方面肯定是需要有轮转功能,而且要限制保留的日志份数。至于是按文件大小,还是按天、按小时切割,则可以讨论。

另一方面,对于日志的级别,如果能够动态调整,则方便日志关闭常规日志,在线调试时,动态降低日志的等级,打印更多debug日志。

2、调研

目前主要的有几个:

github.com/sirupsen/logrus。用户广泛,但明确表示不支持日志切割功能,建议通过hook走日志系统。github.com/natefinch/lumberjack。支持以文件大小的方式切割日志。用户偏少。gopkg.in/inconshreveable/log15.v2。比较老牌。github.com/lestrrat-go/file-rotatelogs。基于小时数进行切割的小众包。github.com/xiaomi-tc/log15。小米基于log15写的二次封装增加了切割功能。但只有2星。

有前同事基于log15写的二次封装,但log15.v2/ext的包不太容易理解。

github.com/ngaut/log。完全不依赖第三方包。可基于日期及小时进行切割。

综上,ngaut比较适合学习和了解封装过程。而基于logrus则是比较靠谱的选择,底层需要其他包实现的切割功能。

3、功能设计

主要点:

由logrus来完成日志功能。

需要完成日志切割,历史日志需要压缩

支持参考Go代码遇到的问题提供的level热更新

更多相关文章

  1. golang 哪些功能用标准库
  2. Go如何使用websocket实现弹幕功能
  3. Go语言实现之基于websocket浏览器通知功能
  4. 关于Go语言的http/2服务器功能及客户端使用方法
  5. 快看!go-carbon 1.2.2 版本发布了!新增了时间设置和时间差比较功能
  6. 教你用golang实现直播和点播功能
  7. 使用 XML 文件记录操作日志
  8. 使用xmlhttp为网站增加域名查询功能详细介绍
  9. xml,文件操作功能类的示例代码详解

随机推荐

  1. Android控件开发之TextView
  2. Android - ToDoList(fragment) 详解
  3. Android(安卓)UI 开发入门—线性布局练习
  4. Android开发系列(一)
  5. android-Notification.Action
  6. android wifi状态机原理
  7. 更新Android SDK, 升级ADT遇到的问题总结
  8. ImageView的属性android:scaleType,即Imag
  9. launcher3时钟小部件
  10. Android TTS 支持中文