beego框架 日志处理

beego设计了一个专门处理日志的库,方便我在项目中打印各种错误日志,调试日志,使用日志库需要先安装日志库。

 

1. 安装日志库

go get github.com/beego/beego/v2/core/logs

 

2. 导入包

import (
    "github.com/beego/beego/v2/core/logs"
)/pre>

 

3. 日志配置

3.1. 设置日志级别

// debug级别
logs.SetLevel(logs.LevelDebug)

下面是常用的日志级别: 由高到底,高于当前日志级别的日志不展示。

  • LevelDebug - 对应数字 7
  • LevelInfo - 对应数字 6
  • LevelWarn - 对应数字 4
  • LevelError - 对应数字 3

3.2. 将日志输出到控制台(console)

如果想将日志直接输出到console,则设置:

logs.SetLogger("console")

3.3. 将日志输出到文件

日志输出到文件的配置:

logs.SetLogger(logs.AdapterFile, `{"filename":"app.log", "level":6}`)

将日志输出到文件,详细参数主要通过 SetLogger 的第二个参数配置,这是一个 json 格式的配置。

详细配置:

参数名 说明
filename 日志文件名
maxlines 每个文件保存的最大行数,默认值 1000000
maxsize 每个文件保存的最大尺寸,默认值是 1 << 28, //256 MB
daily 是否按照每天 logrotate,默认是 true
maxdays 文件最多保存多少天,默认保存 7 天
rotate 是否开启 logrotate,默认是 true
level 日志保存的时候的级别,默认是 Trace 级别
perm 日志文件权限

 

4. 打印日志范例

// 日志打印到console
logs.SetLogger("console")

// 设置日志级别
logs.SetLevel(logs.LevelDebug)

// 输出文件名和行号
logs.EnableFuncCallDepth(true)
	
// 设置日志前缀
logs.SetPrefix("codebaoku")

// 下面分别调用不同的日志级别打印日志
logs.Debug("这是一条debug日志, 后面是参数 ", 2019,2018)
logs.Info("携带参数1: %s, 参数2: %d", "codebaoku", 2019)
logs.Warn("可以直接打印map类型数据 ", map[string]int{"key": 2019})
logs.Error("参数1", "参数2", "后面可以加入任意参数")
提示:你也可以使用beego.Info(), beego.Debug(), beego.Error() 打印日志,这些函数其实是对logs进行封装了,跟logs的用法一致。

输出日志:

2019/06/30 18:38:23.075 [D] [main.go:29] codebaoku 这是一条debug日志, 后面是参数  2019 2018
2019/06/30 18:38:23.149 [I] [main.go:29] codebaoku 携带参数1: codebaoku, 参数2: 2019
2019/06/30 18:38:23.149 [W] [main.go:29] codebaoku 可以直接打印map类型数据  map[key:2019]
2019/06/30 18:38:23.149 [E] [main.go:29] codebaoku 参数1 参数2 后面可以加入任意参数
提示:在实际项目中,建议在main.go入口文件,统一对日志库进行配置。

beego 错误处理:在 web 开发的中时候,如果遇到错误,例如: 404, 500错误等等,我们一般都会展示一个错误页面提示用户,beego默认提供了一些内置的错误页面,本章主要介绍如使用错误页面和定制错误页面。