Golang下的Log处理

时间:2022-06-01 17:02:34
原创文章转载请注明出处:@协思, http://zeeman.cnblogs.com

后端系统中的Log是相当重要的,做过高并发服务的同学都会认同这一点。相对而言,调试已经用处不大了,对于这样的项目,我现在也习惯了这种开发方式,有两个原因:

1.debug只能在开发环境,到产线环境就不灵了。
2.在并行计算下,debug可能无法发现潜在的问题。
有了以前做node.js的经验,放弃debug没有想象中那么可怕,只要我们程序设计合理,结构清晰,日志完整,看到异常信息后基本都可以快速定位问题所在。
做Java的时候有log4j,做.NET程序的时候有log4net, 做Node.js的时候有log4js....上述几个模块用了都不错,因此做Go项目自然选择了Log4go。
话说这个log4go并不完善,而且两年没维护了,白瞎了这么好的名字。比较严重的是程序退出可能有日志没有flush到磁盘上:
 func main(){
log.Debug("....")
defer log.Close()
}
程序执行后是没有log的,这个问题两年了还没解决,参见:
使用开源项目我是比较看重活跃度的,本想自己写一个模块来解决,后来找到了seelog,试用了一下,还不错,并且各荐配置和习惯和log4x还比较统一。
seelog源码地址:https://github.com/cihub/seelog
seelog支持在console中输出日志时自定义不同的颜色,但是使用ANSI color,在windows cmd下显示乱码,解决方式是安装一个插件:
解压后需要注入:
ansicon.exe -i