日志处理 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| 200 | 1.349317ms| match| GET  /admin/user/index r:/admin/user/index ~~~