Golang的日誌處理

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

相關文章
相關標籤/搜索