整個看了一圈下來,感受Golang的日誌包在管理多線程安全的狀況下,提供了最小粒度的工具。並無提供什麼複雜的過濾器之類的生成。python
實現了一個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並將地址返回分配給它們。這種日誌管理的方法真給人一種很清爽的感受,並且外面能夠基於這些最基礎的東西再作二次的定製。也很是靈活。後面寫東西會嘗試多用用看。再來補這篇文章。先佔個坑spa
to be continue...線程