go+beego框架项目中使用logs模块实现日志功能流程步骤

2023-06-01 00:00:00 框架 模块 步骤

以我的beego项目为例,为期添加日志记录功能(文件记录)

http://go.zongscan.com/

根据官方手册:

https://www.topgoer.com/beego%E6%A1%86%E6%9E%B6/beego%E7%9A%84%E6%A8%A1%E5%9D%97%E8%AE%BE%E8%AE%A1/logs%E6%A8%A1%E5%9D%97.html


添加配置信息

\conf\app.conf

[log]
#debug级别
log_level = 7
#指定log文件名   
log_path = logs/gblog.log 
#log文件最大行数
maxlines = 10 
#log文件大小限制
maxsize = 1024
#文件最多保存多少天,默认保存 7 天
maxdays = 2


创建文件

1.在项目根目录创建logs目录 (存放日志文件);

2.在项目根目录创建components目录 (日志结构封装函数);

\components\logger.go


package components

import (
"encoding/json"
"fmt"

"github.com/astaxie/beego"
"github.com/astaxie/beego/config"
"github.com/astaxie/beego/logs"
)

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
}

在项目入口main.go中注册日志函数 (logger初始化) 

\main.go

package main

import (
"gblog/components"
"gblog/controllers"
_ "gblog/routers"
"gblog/utils"

"context"
"fmt"
"time"

"github.com/astaxie/beego"
"github.com/astaxie/beego/orm"
_ "github.com/go-sql-driver/mysql"
)

func init() {
components.InitLogger() //调用logger初始化

...

utils.Init() //注册函数

}

func main() {
//404页面
beego.ErrorController(&controllers.ErrorController{})

...

beego.Run()
}

日志就添加完了

ctrl+R 重新启动项目 看看效果

随便点几下,进几个页面

beego日志文件.png

beego日志log.png

相关文章