go開發屬於本身的日誌庫-日誌庫需求分析

go的第三方框架中已經有不少日誌庫了,爲何還要本身寫一遍。俗話說,好記性不如爛筆頭,更況且是編程語言呢。多寫多練才能使本身技術進步。編程

通常來講,日誌庫支持文件寫入和console顯示,還有的支持寫入在網絡服務中,此次的日誌庫,只須要實現文件寫入和console就能夠了。網絡

一、首先咱們須要定義日誌的打印級別:

  1. Debug: 調試程序,日誌最詳細。可是會影響程序的性能。
  2. Trace: 追蹤問題。
  3. Info: 打印日誌運行中比較重要的信息,好比訪問日誌。
  4. Warn: 警告,說明程序中出現了潛在的問題。
  5. Error: 錯誤,程序運行發生了錯誤,可是不影響程序運行。
  6. Fatal: 嚴重錯誤, 會致使程序退出。

二、日誌存儲的位置

  1. 直接輸出到console
  2. 打印到文件

三、使用接口來實現

爲何要採用接口的方式來實現,來個例子就明白了。 新建一個log項目,新建一個file.go:框架

package log

import "fmt"

type FileLog struct {
}

func NewFileLog(file string) *FileLog {
    return &FileLog()
}

func (f *FileLog) LogDebug(msgstring) {
    fmt.Println(msg) // 假設這裏是寫入文件
}
複製代碼

再新建一個console.go文件:編程語言

package main

import "fmt"

type ConsoleLog struct {
}

func NewConsoleLog() *ConsoleLog {
    return &ConsoleLog()
}

func (c *ConsoleLog) LogDebug(msgstring) {
    fmt.Println(msg)
}
複製代碼

而後咱們再新建一個server項目,新建一個main.go文件,調用剛纔寫的兩個文件進行日誌模擬寫入打印。 好比如今咱們進行日誌文件的寫入:性能

package main

import "log"

func main() {
    file := log.NewFileLog("/xxx/xx")
    file.LogDebug("This is debug log")
}

複製代碼

又或者咱們進行日誌的打印:spa

package main

import "log"

func main() {
    console := log.NewConsoleLog()
    console("This is debug log")
}

複製代碼

這樣寫的時候是看不出來有什麼的問題,可是若是項目的代碼累計起來了,準備進行上線,這時候你須要將以前日誌打印的地方所有修改成日誌文件寫入,須要一個一個文件的修改,很是的浪費的時間。因此採用接口開發的日誌,在擴展程序的維護上會很是的方便。下一遍咱們開始開發日誌庫。debug

相關文章
相關標籤/搜索