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

配置对象

配置对象定义:https://godoc.org/github.com/gogf/gf/os/glog#Config

配置方法

方法列表: https://godoc.org/github.com/gogf/gf/os/glog

简要说明:

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

SetConfigWithMap方法

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

简单示例:

  1. logger := glog.New()
  2. logger.SetConfigWithMap(g.Map{
  3. "path": "/var/log",
  4. "level": "all",
  5. "stdout": false,
  6. "StStatus": 0,
  7. })
  8. logger.Print("test")

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

其中level即可以使用常量glog.LEVEL_ALL/glog.LEVEL_DEV/glog.LEVEL_PROD,也可以使用字符串all/dev/prod来配置。

单例对象

GF v1.10版本开始,日志组件支持单例模式,使用g.Log(单例名称)获取不同的单例日志管理对象。提供单例对象的目的在于针对不同业务场景可以使用不同配置的日志管理对象。

配置文件

日志组件支持配置文件,当使用g.Log(单例名称)获取Logger单例对象时,将会自动通过默认的配置管理对象获取对应的Logger配置。默认情况下会读取logger.单例名称配置项,当该配置项不存在时,将会读取logger配置项。

示例1,默认配置项

  1. [logger]
  2. path = "/var/log"
  3. level = "all"
  4. stdout = false

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

示例2,多个配置项

多个Logger的配置示例:

  1. [logger]
  2. path = "/var/log"
  3. level = "all"
  4. stdout = false
  5. [logger.logger1]
  6. path = "/var/log/logger1"
  7. level = "debug"
  8. stdout = false
  9. [logger.logger2]
  10. path = "/var/log/logger2"
  11. level = "prod"
  12. stdout = true

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

  1. // 对应 logger.logger1 配置项
  2. l1 := g.Log("logger1")
  3. // 对应 logger.logger2 配置项
  4. l2 := g.Log("logger2")
  5. // 对应默认配置项 logger
  6. l3 := g.Log("none")
  7. // 对应默认配置项 logger
  8. l4 := g.Log()