本文为转载,原文地址: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]) } } }
最终的工程目录以下: