Golang log包学习
Log模块简介
Golang log模块提供了Print、Panic、Fatal三类接口,对每一类接口其提供了3中调用方式,分别是 “Xxxx 、 Xxxxln 、Xxxxf”,基本和fmt中的相关函数类似。
区别:
- log.Fatal接口,会先将日志内容打印到标准输入,接着直接调用os.exit(1)接口,退出程序并返回状态1,由于是直接退出,defer函数不会被调用。
- log.Panic接口,该函数把日志内容输出到标准错误后调用panic函数,defer函数不会被调用。
Log模块使用方法
创建Log文件
Logfile := os.Create(LogfleName)
使用os模块提供的Create方法可以很方便的创建文件,如果需要随时间生成Log文件的话,可以将LogfileName随时间命名,使用time模块。
生成Log对象
TestLog := log.New(Logfile, "[Info]", log.Llongfile)
使用log模块New函数生成Log对象,其中Logfile为输出位置,是io.Writer对象;第二个参数为前缀,第三个参数为打印标记,这两个参数影响打印格式。
可以通过如下函数修改前缀和标记及输出。
TestLog.SetPrefix("[Debug]")
Testlog.SetOutput()
Testlog.SetFlags()
其Flag可以是以下值,或以下值或的值。
Ldate = 1 << iota // 形如 2009/01/23 的日期
Ltime // 形如 01:23:23 的时间
Lmicroseconds // 形如 01:23:23.123123 的时间
Llongfile // 全路径文件名和行号: /a/b/c/d.go:23
Lshortfile // 文件名和行号: d.go:23
示例如下:
package main
import (
"log"
"os"
)
func main() {
logName := "Test.log"
logfile, err := os.Create(logName)
defer logfile.Close()
if err != nil {
log.Fateln("Open log file error.")
}
Testlog := log.New(logfile, "[Test]", log.Ldate | log.Ltime)
Testlog.Println("A test message.")
}