阅读(607) (13)

GoFrame 日志组件-配置管理

2022-03-29 13:53:03 更新

日志组件是​GoFrame​框架核心的组件之一,当然也支持非常方便的配置管理功能。

配置文件(推荐)

日志组件支持配置文件,当使用​g.Log​(单例名称)获取​Logger​单例对象时,将会自动通过默认的配置管理对象获取对应的​Logger​配置。默认情况下会读取​logger​.单例名称配置项,当该配置项不存在时,将会读取默认的​logger​配置项。配置项请参考配置对象结构定义:https://pkg.go.dev/github.com/gogf/gf/v2/os/glog

完整配置文件配置项及说明如下,其中配置项名称不区分大小写:

logger:
  path:                  "/var/log/"   # 日志文件路径。默认为空,表示关闭,仅输出到终端
  file:                  "{Y-m-d}.log" # 日志文件格式。默认为"{Y-m-d}.log"
  prefix:                ""            # 日志内容输出前缀。默认为空
  level:                 "all"         # 日志输出级别
  ctxKeys:               []            # 自定义Context上下文变量名称,自动打印Context的变量到日志中。默认为空
  header:                true          # 是否打印日志的头信息。默认true
  stdout:                true          # 日志是否同时输出到终端。默认true
  rotateSize:            0             # 按照日志文件大小对文件进行滚动切分。默认为0,表示关闭滚动切分特性
  rotateExpire:          0             # 按照日志文件时间间隔对文件滚动切分。默认为0,表示关闭滚动切分特性
  rotateBackupLimit:     0             # 按照切分的文件数量清理切分文件,当滚动切分特性开启时有效。默认为0,表示不备份,切分则删除
  rotateBackupExpire:    0             # 按照切分的文件有效期清理切分文件,当滚动切分特性开启时有效。默认为0,表示不备份,切分则删除
  rotateBackupCompress:  0             # 滚动切分文件的压缩比(0-9)。默认为0,表示不压缩
  rotateCheckInterval:   "1h"          # 滚动切分的时间检测间隔,一般不需要设置。默认为1小时
  stdoutColorDisabled:   false         # 关闭终端的颜色打印。默认开启
  writerColorEnable:     false         # 日志文件是否带上颜色。默认false,表示不带颜色

其中,​level​配置项使用字符串配置,按照日志级别支持以下配置:​DEBU​< ​INFO< ​NOTI< ​WARN< ​ERRO< ​CRIT,也支持​ALL​, ​DEV​, ​PROD​常见部署模式配置名称。​level​配置项字符串不区分大小写。

示例1,默认配置项

logger:
  path:    "/var/log"
  level:   "all"
  stdout:  false

随后可以使用​g.Log()​获取默认的单例对象时自动获取并设置该配置。

示例2,多个配置项

多个​Logger​的配置示例:

logger:
  path:    "/var/log"
  level:   "all"
  stdout:  false
  logger1:
    path:    "/var/log/logger1"
    level:   "dev"
    stdout:  false
  logger2:
    path:    "/var/log/logger2"
    level:   "prod"
    stdout:  true

我们可以通过单例对象名称获取对应配置的​Logger​单例对象:

// 对应 logger.logger1 配置项
l1 := g.Log("logger1")
// 对应 logger.logger2 配置项
l2 := g.Log("logger2")
// 对应默认配置项 logger
l3 := g.Log("none")
// 对应默认配置项 logger
l4 := g.Log()

配置方法(高级)

配置方法用于模块化使用​glog​时由开发者自己进行配置管理。

简要说明:

  1. 可以通过​SetConfig​及​SetConfigWithMap​来设置。
  2. 也可以使用​Logger​对象的​Set*​方法进行特定配置的设置。
  3. 主要注意的是,配置项在​Logger​对象执行日志输出之前设置,避免并发安全问题。

我们可以使用​SetConfigWithMap​方法通过​Key-Value​键值对来设置/修改​Logger​的特定配置,其余的配置使用默认配置即可。其中​Key​的名称即是​Config​这个​struct​中的属性名称,并且不区分大小写,单词间也支持使用​-​/​_​/空格符号连接。

简单示例:

logger := glog.New()
logger.SetConfigWithMap(g.Map{
    "path":     "/var/log",
    "level":    "all",
    "stdout":   false,
    "StStatus": 0,
})
logger.Print("test")

其中​StStatus​表示是否开启堆栈打印,设置为​0​表示关闭。键名也可以使用​stStatus​, ​st-status​, ​st_status​, ​St Status​,其他配置属性以此类推。