這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
在go裡面,雖然有log模組,但是該模組提供的功能並不強,譬如就沒有我們常用的level log功能,但是自己實現一個log模組也並不困難。
對於log的level,我們定義如下:
const ( LevelTrace = iota LevelDebug LevelInfo LevelWarn LevelError LevelFatal)
相應的,提供如下幾個函數:
func Trace(format string, v ...interface{}) func Debug(format string, v ...interface{}) func Info(format string, v ...interface{}) func Warn(format string, v ...interface{}) func Error(format string, v ...interface{}) func Fatal(format string, v ...interface{})
另外,對於一個log,我們可能將其寫入不同的地方,譬如可能直接輸出到stdout,或者寫檔案,或者寫socket,在建立特定logger的時候,我們需要指定對應的handler,用來實現不同的寫入方式。
handler的定義如下:
type Handler interface { Write(p []byte) (n int, err error) Close() error}
我們可以參考python的log模組,實現幾個通用的handler,譬如StreamHandler,FileHandler,TimeRotatingFileHandler。
log模組的實現https://github.com/siddontang/golib/tree/master/log。
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。