由于首次接触beego,在使用log时,
1 目录结构
2 log 配置app.conf
[log]
log_level = 7 //debug级别
log_path = logs/app.log //指定log文件名
maxlines = 10 //log文件最大行数
maxsize = 1024 //log文件大小限制
后两项是控制log文件大小的,其中maxlines 超出后会自动生成新的app.log文件,原log文件重命名为app.2020-03-22.001.log,自动实现日志切割
3 log结构封装
log文件在components目录下,logger.go
package components
import (
"fmt"
"encoding/json"
"github.com/astaxie/beego"
"github.com/astaxie/beego/logs"
"github.com/astaxie/beego/config"
)
func InitLogger() (err error) {
BConfig, err := config.NewConfig("ini", "conf/app.conf")
if err != nil{
fmt.Println("config init error:", err)
return
}
maxlines, lerr := BConfig.Int64("log::maxlines")
if lerr != nil {
maxlines = 1000
}
logConf := make(map[string]interface{})
logConf["filename"] = BConfig.String("log::log_path")
level,_ := BConfig.Int("log::log_level")
logConf["level"] = level
logConf["maxlines"] = maxlines
confStr, err := json.Marshal(logConf)
if err != nil {
fmt.Println("marshal failed,err:", err)
return
}
beego.SetLogger(logs.AdapterFile, string(confStr))
beego.SetLogFuncCall(true)
return
}
4 注册
package main
import (
"github.com/astaxie/beego"
_ "template/routers"
"template/components"
)
func init() {
components.InitLogger() //调用logger初始化
components.InitDB() //db初始化,多db注册
}
func main() {
beego.Run()
}
5 日志级别及使用
1-7级别递减,默认是trace,显示当前数字以前的级别,例如:3时,显示【Emergency】【Alert】【Critical】【Error】
// RFC5424 log message levels.
const (
LevelEmergency = iota
LevelAlert //1
LevelCritical //2
LevelError //3
LevelWarning //4
LevelNotice //5
LevelInformational//6
LevelDebug //7
)
beego.Info("hello world");
打印的日志格式如下
2020/03/22 14:54:07.509 [I] [RuleController.go:16] hello world
参考文档
https://beego.me/docs/module/logs.md