Beego學習筆記——Logs


本文為轉載,原文地址:Beego學習筆記——Logs

日志處理

這是一個用來處理日志的庫,它的設計思路來自於database/sql,目前支持的引擎有file、console、net、smtp,可以通過如下方式進行安裝:

go get github.com/astaxie/beego/logs

如何使用

首先引入包:

import (
    "github.com/astaxie/beego/logs"
)   

然后初始化log變量(10000表示緩存的大小):

log := NewLogger(10000)

然后添加輸出引擎(log支持同時輸出到多個引擎),這里我們以console為例,第一個參數是引擎名(包括:console、file、conn、smtp),第二個參數表示配置信息,詳細的配置請看下面介紹:

log.SetLogger("console", "")

然后我們就可以在我們的邏輯中開始任意的使用了

 

引擎配置設置

  • console

    可以設置輸出的級別,或者不設置保持默認,默認輸出到os.Stdout

    log := NewLogger(10000)
    log.SetLogger("console", `{"level":1}`)                     
    
  • file 

    設置的例子如下所示:

    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下的日志如下圖
 

最終的工程目錄如下:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM