Golang的日志處理


整個看了一圈下來,感覺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...

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM