一架梯子,一头程序猿,仰望星空!

beego 日志处理


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入口文件,统一对日志库进行配置。