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.")
}