Beego学习笔记——Logs

本文为转载,原文地址: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"}`)

    主要的参数以下说明:

    • filename 保存的文件名 
    • maxlines 每一个文件保存的最大行数,默认值1000000 
    • maxsize 每一个文件保存的最大尺寸,默认值是1 << 28, //256 MB 
    • daily 是否按照天天logrotate,默认是true 
    • maxdays 文件最多保存多少天,默认保存7天 
    • rotate 是否开启logrotate,默认是true 
    • level 日志保存的时候的级别,默认是Trace级别 
  • conn

    网络输出,设置的例子以下所示:

    log := NewLogger(1000)
    log.SetLogger("conn", `{"net":"tcp","addr":":7020"}`)

    主要的参数说明以下:

    • reconnectOnMsg 是否每次连接都从新打开连接,默认是false 
    • reconnect 是否自动从新连接地址,默认是false 
    • net 发开网络连接的方式,能够使用tcp、unix、udp等 
    • addr 网络连接的地址 
    • level 日志保存的时候的级别,默认是Trace级别 
  • smtp

    邮件发送,设置的例子以下所示:

    log := NewLogger(10000)
    log.SetLogger("smtp", `{"username":"beegotest@gmail.com","password":"xxxxxxxx","host":"smtp.gmail.com:587","sendTos":["xiemengjun@gmail.com"]}`)

    主要的参数说明以下:

    • username smtp验证的用户名 
    • password smtp验证密码 
    • host 发送的邮箱地址 
    • sendTos 邮件须要发送的人,支持多个 
    • subject 发送邮件的标题,默认是Diagnostic message from server
    • level 日志发送的级别,默认是Trace级别

 

接下来,咱们再研究下在咱们的学习中如何去使用这个功能。在这里只针对console和file这两种引擎进行解析。
首先在utils目录下新建个blogs.go文件。在这个文件中,须要对log进行初始化,具体代码以下:
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"}`)
}
View Code
这里定义了两个日志的实例,ConsoleLogs和FileLogs分别对应的是console和file两种引擎,在这里初始化完成之后,后面就能够随意调用了。
如今就在main.go函数里调用下试试吧,代码以下:
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])
              }
       }
}
console下的日志以下图:
file下的日志以下图
 

最终的工程目录以下:

相关文章
相关标签/搜索