整個看了一圈下來,感覺Golang的日志包在管理多線程安全的情況下,提供了最小粒度的工具。並沒有提供什么復雜的過濾器之類的生成。
實現了一個demo來記錄一下日志分類日志打印等實現:
package main import ( "log" "os" "io/ioutil" "io" ) var ( Trace *log.Logger // 記錄所有日志 Info *log.Logger // 重要的信息 Warning *log.Logger // 需要注意的信息 Error *log.Logger // 致命錯誤 ) func init() { file, err := os.OpenFile("file", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666) if err != nil { log.Fatalln("Failed to open error log file:", err) } Trace = log.New(ioutil.Discard, "TRACE: ", log.Ltime|log.Lshortfile) Info = log.New(os.Stdout, "Info: ", log.Ltime|log.Lshortfile) Warning = log.New(os.Stdout, "Warning: ", log.Ltime|log.Lshortfile) Error = log.New(io.MultiWriter(file, os.Stderr), "Error", log.Ltime|log.Lshortfile) } func main() { Trace.Println("I have something standard to say") Info.Println("Special Information") Warning.Println("There is something you need to know about") Error.Println("Something has failed") }
其實給我感覺跟python沒差,還簡單很多。
首先還是申明一個logger對象,用他來調用各種logger的方法,一開始初始化了幾個級別的日志logger收集器。
隨后就是new一個新的logger並將地址返回分配給它們。這種日志管理的方法真給人一種很清爽的感覺,而且外面可以基於這些最基礎的東西再做二次的定制。也非常靈活。后面寫東西會嘗試多用用看。再來補這篇文章。先占個坑
to be continue...
