beego设计了一个专门处理日志的库,方便我在项目中打印各种错误日志,调试日志,使用日志库需要先安装日志库。
1.安装日志库
go get github.com/beego/beego/v2/core/logs
2.导入包
import (
"github.com/beego/beego/v2/core/logs"
)
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 | 日志文件权限 |
3.4 将日志输出到阿里云日志服务
如果使用阿里云的服务器的话,可以选择将日志输出到阿里云的日志服务。
提示:新版本的日志库才支持阿里云日志服务,留意自己使用的版本
配置:
logs.SetLogger(logs.AdapterAliLS, `{"project":"tizi365", "endpoint":"cn-hangzhou.log.aliyuncs.com","key_id":"IjihsgaiiiJ", "key_secret":"SADIJAYhh", "log_store":"demo"}`)
参数说明:
参数名 | 说明 |
project | 日志服务项目名 |
endpoint | 日志服务地址 |
key_id | 阿里云accessKeyId |
key_secret | 阿里云accessSecret |
log_store | 日志库 |
4.打印日志的例子
// 日志打印到console
logs.SetLogger("console")
// 设置日志级别
logs.SetLevel(logs.LevelDebug)
// 输出文件名和行号
logs.EnableFuncCallDepth(true)
// 设置日志前缀
logs.SetPrefix("tizi365")
// 下面分别调用不同的日志级别打印日志
logs.Debug("这是一条debug日志, 后面是参数 ", 2019,2018)
logs.Info("携带参数1: %s, 参数2: %d", "tizi365", 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] tizi365 这是一条debug日志, 后面是参数 2019 2018
2019/06/30 18:38:23.149 [I] [main.go:29] tizi365 携带参数1: tizi365, 参数2: 2019
2019/06/30 18:38:23.149 [W] [main.go:29] tizi365 可以直接打印map类型数据 map[key:2019]
2019/06/30 18:38:23.149 [E] [main.go:29] tizi365 参数1 参数2 后面可以加入任意参数
提示:在实际项目中,建议在main.go入口文件,统一对日志库进行配置。