參考beego開發文檔:http://beego.me/docs/module/logs.md
beego框架之日志模塊默認支持4種記錄方式:
1. 終端輸出(console) :這種方式一般用在開發環境下面,方便調試。
2. 本地文件(file) :這種方式一般用來保存常規日志,為生產環境中常用的方式。
3. 網絡方式(network):這種方式可以用來將日志發送到指定服務器,一般可以用來根據日志觸發事件等。
4. 發送郵件(email) :這種方式一般是將生產環境下比較重要的日志發送給相應的管理人員,以便及時發現和解決問題。
beego框架之日志模塊等級定義在github.com/astaxie/beego/logs/log.go:(級別以此遞減)
const (
LevelEmergency = iota // 緊急級別
LevelAlert // 報警級別
LevelCritical // 嚴重錯誤級別
LevelError // 錯誤級別
LevelWarning // 警告級別
LevelNotice // 注意級別
LevelInformational // 報告級別
LevelDebug // 除錯級別
)
1. 終端輸出(console)記錄方式示例:
1 package main 2 3 import ( 4 "github.com/astaxie/beego/logs" 5 ) 6 7 func main() { 8 log := logs.NewLogger(10000) // 創建一個日志記錄器,參數為緩沖區的大小 9 log.SetLogger("console", "") // 設置日志記錄方式:控制台記錄 10 log.SetLevel(logs.LevelDebug) // 設置日志寫入緩沖區的等級:Debug級別(最低級別,所以所有log都會輸入到緩沖區) 11 log.EnableFuncCallDepth(true) // 輸出log時能顯示輸出文件名和行號(非必須) 12 13 log.Emergency("Emergency") 14 log.Alert("Alert") 15 log.Critical("Critical") 16 log.Error("Error") 17 log.Warning("Warning") 18 log.Notice("Notice") 19 log.Informational("Informational") 20 log.Debug("Debug") 21 22 log.Close() 23 } 24 25 程序輸出: 26 2015/06/29 12:01:07 [main.go:13] [M] Emergency 27 2015/06/29 12:01:07 [main.go:14] [A] Alert 28 2015/06/29 12:01:07 [main.go:15] [C] Critical 29 2015/06/29 12:01:07 [main.go:16] [E] Error 30 2015/06/29 12:01:07 [main.go:17] [W] Warning 31 2015/06/29 12:01:07 [main.go:18] [N] Notice 32 2015/06/29 12:01:07 [main.go:19] [I] Informational 33 2015/06/29 12:01:07 [main.go:20] [D] Debug 34 35 備注:如果log.SetLevel(logs.LevelDebug)修改為log.SetLevel(logs.LevelEmergency),則只輸出Emergency級別的log,其他級別的log不會輸出。
2. 本地文件(file)記錄方式示例:
package main import ( "github.com/astaxie/beego/logs" ) func main() { log := logs.NewLogger(10000) // 創建一個日志記錄器,參數為緩沖區的大小 // 設置配置文件 jsonConfig := `{ "filename" : "test.log", // 文件名 "maxlines" : 1000, // 最大行 "maxsize" : 10240 // 最大Size }` log.SetLogger("file", jsonConfig) // 設置日志記錄方式:本地文件記錄 log.SetLevel(logs.LevelDebug) // 設置日志寫入緩沖區的等級 log.EnableFuncCallDepth(true) // 輸出log時能顯示輸出文件名和行號(非必須) log.Emergency("Emergency") log.Alert("Alert") log.Critical("Critical") log.Error("Error") log.Warning("Warning") log.Notice("Notice") log.Informational("Informational") log.Debug("Debug") log.Flush() // 將日志從緩沖區讀出,寫入到文件 log.Close() } 輸出結果:test.log 2015/06/29 12:55:29 [main.go:19] [M] Emergency 2015/06/29 12:55:29 [main.go:20] [A] Alert 2015/06/29 12:55:29 [main.go:21] [C] Critical 2015/06/29 12:55:29 [main.go:22] [E] Error 2015/06/29 12:55:29 [main.go:23] [W] Warning 2015/06/29 12:55:29 [main.go:24] [N] Notice 2015/06/29 12:55:29 [main.go:25] [I] Informational 2015/06/29 12:55:29 [main.go:26] [D] Debug
