本文爲轉載,原文地址:Beego學習筆記——Logsgit
這是一個用來處理日誌的庫,它的設計思路來自於database/sql
,目前支持的引擎有file、console、net、smtp,能夠經過以下方式進行安裝:github
go get github.com/astaxie/beego/logs
首先引入包:sql
import ( "github.com/astaxie/beego/logs" )
而後初始化log變量(10000表示緩存的大小):緩存
log := NewLogger(10000)
而後添加輸出引擎(log支持同時輸出到多個引擎),這裏咱們以console爲例,第一個參數是引擎名(包括:console、file、conn、smtp),第二個參數表示配置信息,詳細的配置請看下面介紹:網絡
log.SetLogger("console", "")
而後咱們就能夠在咱們的邏輯中開始任意的使用了tcp
consoleide
能夠設置輸出的級別,或者不設置保持默認,默認輸出到os.Stdout
函數
log := NewLogger(10000) log.SetLogger("console", `{"level":1}`)
file 學習
設置的例子以下所示:this
log := NewLogger(10000) log.SetLogger("file", `{"filename":"test.log"}`)
主要的參數以下說明:
conn
網絡輸出,設置的例子以下所示:
log := NewLogger(1000) log.SetLogger("conn", `{"net":"tcp","addr":":7020"}`)
主要的參數說明以下:
smtp
郵件發送,設置的例子以下所示:
log := NewLogger(10000) log.SetLogger("smtp", `{"username":"beegotest@gmail.com","password":"xxxxxxxx","host":"smtp.gmail.com:587","sendTos":["xiemengjun@gmail.com"]}`)
主要的參數說明以下:
Diagnostic message from server
package utils import "github.com/astaxie/beego/logs" var ConsoleLogs *logs.BeeLogger var FileLogs *logs.BeeLogger func init(){ ConsoleLogs = logs.NewLogger(1000) ConsoleLogs.SetLogger("console") FileLogs = logs.NewLogger(1000) FileLogs.SetLogger("file",`{"filename":」logs/test.log"}`) }
func main() { utils.ConsoleLogs.Info("this is a console log with info.") utils.ConsoleLogs.Debug("this is a console log with debug.") utils.ConsoleLogs.Alert("this is a console log with alert.") utils.ConsoleLogs.Error("this is a console log with error.") utils.ConsoleLogs.Trace("this is a console log with trace.") utils.FileLogs.Info("this is a file log with info.") utils.FileLogs.Debug("this is a file log with debug.") utils.FileLogs.Alert("this is a file log with alert.") utils.FileLogs.Error("this is a file log with error.") utils.FileLogs.Trace("this is a file log with trace.") r := bufio.NewReader(os.Stdin) handlers := GetCommandHandlers() Help(nil) for { fmt.Print("Command> ") b, _, _ := r.ReadLine() line := string(b) tokens := strings.Split(line, " ") if handler, ok := handlers[tokens[0]]; ok{ ret := handler(tokens) if ret != 0{ break } }else { fmt.Println("Unknown Command:", tokens[0]) } } }
最終的工程目錄以下: