首页 > 代码库 > Golang下的Log处理

Golang下的Log处理

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

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

Golang下的Log处理