关于使用log与使用fmt的区别
最初的就是直接打印出来,之后一点点升级,比如加上输出的时间,加上goroutine之间的并发操作(打印信息并不能一定按照你规定好的顺序输出来 每次输出的顺序可能会不同),按照不同的日志级别进行打印 。。。加上打印以及转存,因此就需要专门的log包来记录程序的信息。
想象一下,一个很大的项目有很多的输出信息,要是输出信息前面没有加上日期的话,debug起来几乎是难以想象的,因为不可能一直盯着屏幕来对信息进行监控。
因此采用log来代替fmt的原因主要有一下几个方面:
- 添加了输出时间
- 线程安全
- 方便对日志信息进行转存,形成日志文件
关于logger的基本结构,可以参考这个博客:
http://gotaly.blog.51cto.com/8861157/1406905
看logger的结构,除了基本的信息之外,还有许多其他的功能:
http://studygolang.com/articles/3383
具体理解log是线程安全的,可以参考这个博客:
http://blog.csdn.net/paladinosment/article/details/42666147
还有日志的转存打印
创建New对象的时候,通过控制第一个参数,可以直接输出到标准输出上,也可以存到文件中。
如果仅仅想输出到终端,可以直接调用log.XXX方法,不用先生成一个logger对象,再去通过logger对象来调用。在log包中,有一些methods是直接对logger的实现,有一些是直接的库函数,可以直接使用。
http://www.sharejs.com/codes/go/7308
关于单元测试时候的t.logf
这个在内部其实还是使用类似的logs的方法,都是对基本的并行的操作进行了封装之后再处理的,加上了mutex操作,因此在单元测试中也并不推荐直接使用fmt.printf的方法。
有疑问加站长微信联系(非本文作者)
![](https://static.golangjob.cn/static/img/footer.png?imageView2/2/w/280)