go+beego框架项目中使用logs模块实现日志功能流程步骤
以我的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 重新启动项目 看看效果
随便点几下,进几个页面
相关文章