本文摘自php中文网,作者(*-*)浩,侵删。

golang的原生日志模块不能满足需求,而开源的第三方包,也不完全够用。用户较多的logrus,却没有rotate功能,这已经是众所周知的。对于运维来说,当然是希望日志的处理中比较简单、实用、够用。不需要额外的通过系统来实现logrotate。
1、需求
从需求方面来说,主要有几个方面: (推荐学习:go)
一方面肯定是需要有轮转功能,而且要限制保留的日志份数。至于是按文件大小,还是按天、按小时切割,则可以讨论。
另一方面,对于日志的级别,如果能够动态调整,则方便日志关闭常规日志,在线调试时,动态降低日志的等级,打印更多debug日志。
2、调研
目前主要的有几个:
1 2 3 4 5 |
|
有前同事基于log15写的二次封装,但log15.v2/ext的包不太容易理解。
1 |
|
综上,ngaut比较适合学习和了解封装过程。而基于logrus则是比较靠谱的选择,底层需要其他包实现的切割功能。
3、功能设计
主要点:
由logrus来完成日志功能。
需要完成日志切割,历史日志需要压缩
支持参考Go代码遇到的问题提供的level热更新
以上就是golang log如何设计的详细内容,更多文章请关注木庄网络博客!!
相关阅读 >>
聊聊dubbo-go-proxy的authorityfilter
更多相关阅读请进入《golang》频道 >>

Go语言101
一个与时俱进的Go编程知识库。