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