整个看了一圈下来,感觉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...