1.日志处理
最后更新于:2022-04-02 04:54:16
日志处理
beego之前介绍的时候说过是基于几个模块搭建的,beego的日志处理是基于logs模块搭建的,内置了一个变量BeeLogger,默认已经是logs.BeeLogger类型,初始了了console,也就是默认输出到console。
使用入门
一般在程序中我们使用如下的方式进行输出:
~~~
beego.Emergency("this is emergency")
beego.Alert("this is alert")
beego.Critical("this is critical")
beego.Error("this is error")
beego.Warning("this is warning")
beego.Notice("this is notice")
beego.Informational("this is informational")
beego.Debug("this is debug")
~~~
设置输出
我们的程序往往期望把信息输出到log中,现在设置输出到文件很方便,如下所示:
beego.SetLogger("file", `{"filename":"logs/test.log"}`)
详细更多日志的请配置查看日志配置
这个默认情况就会同时输出到两个地方,一个控制台,一个文件,如果只想输出到文件,就需要调用删除操作:
beego.BeeLogger.DelLogger("console")
设置级别
日志的级别如上所示的代码这样分为八个级别:
~~~
LevelEmergency
LevelAlert
LevelCritical
LevelError
LevelWarning
LevelNotice
LevelInformational
LevelDebug
~~~
级别依次降低,默认全部打印,但是一般我们在部署环境,可以通过设置级别设置日志级别:
beego.SetLevel(beego.LevelInformational)
输出文件名和行号
日志默认不输出调用的文件名和文件行号,如果你期望输出调用的文件名和文件行号,可以如下设置
beego.SetLogFuncCall(true)
开启传入参数true,关闭传入参数false,默认是关闭的。
示例代码:
创建logs文件夹 project.log 文件
~~~
project
|
|-- logs
| `-- project.log
~~~
~~~
project
|-- conf
| `-- app.conf
~~~
~~~
appname = project
httpport = 8080
runmode = dev
#关闭自动渲染
autorender = false
~~~
~~~
|-- routers
| `-- router.go
~~~
~~~
package routers
import (
admin "project/admin/controllers"
"github.com/astaxie/beego"
)
func init() {
// 固定路由也就是全匹配的路由
beego.Router("/admin/user/index", &admin.UserController{}, "*:Index")
}
~~~
~~~
|-- admin
| |--controllers
| `-- user.go
~~~
~~~
package admin
import (
"github.com/astaxie/beego"
)
type UserController struct {
beego.Controller
}
func (this *UserController) Index() {
// 正式环境 日志配置根据需求在 beego.Run() 之前配置
// 日志配置
beego.SetLogger("file", `{"filename":"logs/project.log"}`)
// 设置级别
beego.SetLevel(beego.LevelDebug)
// 输出文件名和行号
beego.SetLogFuncCall(true)
// 写入日志
beego.Debug("this is debug")
beego.Informational("this is informational")
beego.Notice("this is notice")
beego.Warning("this is warning")
beego.Error("this is error")
beego.Critical("this is critical")
beego.Alert("this is alert")
beego.Emergency("this is emergency")
this.Ctx.WriteString("Run to the end")
}
~~~
浏览器访问:
http://127.0.0.1:8080/admin/user/index
查看 logs/project.log
~~~
2018/04/20 11:10:40 [D] [user.go:19] this is debug
2018/04/20 11:10:40 [I] [user.go:20] this is informational
2018/04/20 11:10:40 [N] [user.go:21] this is notice
2018/04/20 11:10:40 [W] [user.go:22] this is warning
2018/04/20 11:10:40 [E] [user.go:23] this is error
2018/04/20 11:10:40 [C] [user.go:24] this is critical
2018/04/20 11:10:40 [A] [user.go:25] this is alert
2018/04/20 11:10:40 [M] [user.go:26] this is emergency
2018/04/20 11:10:40 [D] [server.go:2610] | 127.0.0.1|[42m 200 [0m| 1.349317ms| match|[44m GET [0m /admin/user/index r:/admin/user/index
~~~
';