1. log包
作为程序调试手段和运行记录,log是非常重要的,现在多数情况下并不是通过某个调试器来进行debug了,而是通过打log的方式观察和调试程序。
可以根据自己的需要实现log功能,Go语言本身也已经内置了log包,这里研究Go语言内置log包的使用方法。
如果习惯看go doc,可以查阅go doc 来快速查阅log包的信息。
1.1 屏显log
屏幕显示即输出log到标准输出设备。
package main
import (
"log"
)
func main() {
log.Println("log.Println")
}
---------------
2018/03/29 10:09:20 log.Println
可以看到,直接使用log包,通过log.Println就可以向标准输出打印log,带有日期时间和自定义字符串。可以使用的函数还有print和printf,参考fmt包中的print函数家族的使用方法。
函数 | 原型 |
---|---|
func Print(v …interface{}) | |
Println | func Println(v …interface{}) |
Printf | func Printf(format string, v …interface{}) |
Print和Println,其实用起来没有什么区别,连续用log.Print,也并不会输出到同一行,还是每调用一次,就产生新的一行log。
1.2 panic, fatal
log包还提供了两个异常情况的处理函数,panic家族和fatal家族:
函数 | 原型 |
---|---|
Panic | func Panic(v …interface{}) |
Panicln | func Panicln(v …interface{}) |
Panicf | func Panicf(format string, v …interface{}) |
Fatal | func Fatal(v …interface{}) |
Fatalln | func Fatalln(v …interface{}) |
Fatalf | func Fatalf(format string, v …interface{}) |
panic会打印指定的log字符转,然后抛出异常,显示调用栈。
package main
import (
"log"
)
func main() {
defer log.Println("log in defer")
log.Println("log.Println")
log.Panicln("log.Panicln")
}
---------------
2018<