如何设计go语言中的log

Go语言是谷歌2009发布的第二款开源编程语言。Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。

目前创新互联公司已为数千家的企业提供了网站建设、域名、网站空间绵阳服务器托管、企业网站设计、宁化网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

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

1、需求

从需求方面来说,主要有几个方面: 

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

另一方面,对于日志的级别,如果能够动态调整,则方便日志关闭常规日志,在线调试时,动态降低日志的等级,打印更多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热更新

以上就是golang log如何设计的详细内容,更多请关注创新互联其它相关文章!

网站栏目:如何设计go语言中的log
文章位置:https://www.cdcxhl.com/article40/jdogho.html

成都网站建设公司_创新互联,为您提供外贸网站建设网站营销网站设计标签优化网站维护建站公司

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

营销型网站建设