go的第三方框架中已經有不少日誌庫了,爲何還要本身寫一遍。俗話說,好記性不如爛筆頭,更況且是編程語言呢。多寫多練才能使本身技術進步。編程
通常來講,日誌庫支持文件寫入和console顯示,還有的支持寫入在網絡服務中,此次的日誌庫,只須要實現文件寫入和console就能夠了。網絡
爲何要採用接口的方式來實現,來個例子就明白了。 新建一個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