Versions Compared
Key
- This line was added.
- This line was removed.
- Formatting was changed.
日志组件是GoFrame
框架核心的组件之一,当然也支持非常方便的配置管理功能。框架核心的组件之一,支持非常方便的配置管理能力。
配置文件(推荐)
Tip |
---|
日志的配置使用的是框架统一的配置组件,支持多种文件格式,也支持配置中心、接口化扩展等特性,更多细节请参考章节:配置管理 |
日志组件支持配置文件,当使用g.Log(单例名称)
获取Logger
单例对象时,将会自动通过默认的配置管理对象获取对应的Logger
配置。默认情况下会读取logger.单例名称
配置项,当该配置项不存在时,将会读取默认的logger
配置项。配置项请参考配置对象结构定义:https://pkg.go.dev/github.com/gogf/gf/v2/os/glog#Config
完整配置文件配置项及说明如下,其中配置项名称不区分大小写:
Code Block | ||
---|---|---|
| ||
logger: path: "/var/log/" # 日志文件路径。默认为空,表示关闭,仅输出到终端 file: "{Y-m-d}.log" # 日志文件格式。默认为"{Y-m-d}.log" prefix: "" # 日志内容输出前缀。默认为空 level: "all" # 日志输出级别 timeFormat: "2006-01-02T15:04:05" # 自定义日志输出的时间格式,使用Golang标准的时间格式配置 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 true # 关闭终端的颜色打印。默认开启 writerColorEnable: false # 日志文件是否带上颜色。默认false,表示不带颜色 |
其中,level
配置项使用字符串配置,按照日志级别支持以下配置:DEBU
< INFO
< NOTI
< WARN
< ERRO
< CRIT
,也支持ALL
, DEV
, PROD
常见部署模式配置名称。level
配置项字符串不区分大小写。关于日志级别的详细介绍请查看 日志组件-日志级别 章节。
示例1,默认配置项
Code Block | ||
---|---|---|
| ||
logger: path: "/var/log" level: "all" stdout: false |
随后可以使用g.Log()
获取默认的单例对象时自动获取并设置该配置。
示例2,多个配置项
多个Logger
的配置示例:
Code Block | ||
---|---|---|
| ||
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
单例对象:
Code Block | ||
---|---|---|
| ||
// 对应 logger.logger1 配置项 l1 := g.Log("logger1")<br /> // 对应 logger.logger2 配置项 l2 := g.Log("logger2")<br /> // 对应默认配置项 logger l3 := g.Log("none")<br /> // 对应默认配置项 logger l4 := g.Log() |
配置方法(高级)
配置方法用于模块化使用glog
时由开发者自己进行配置管理。
方法列表:
简要说明:
- 可以通过
SetConfig
及SetConfigWithMap
来设置。 - 也可以使用
Logger
对象的Set*
方法进行特定配置的设置。 - 主要注意的是,配置项在
Logger
对象执行日志输出之前设置,避免并发安全问题。
我们可以使用SetConfigWithMap
方法通过Key-Value
键值对来设置/修改Logger
的特定配置,其余的配置使用默认配置即可。其中Key
的名称即是Config
这个struct
中的属性名称,并且不区分大小写,单词间也支持使用-
/_
/空格
符号连接,具体可参考 类型转换-Struct转换 章节的转换规则。
简单示例:
Code Block | ||
---|---|---|
| ||
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
,其他配置属性以此类推。
注意事项
常见问题:如日志组件的配置为何没有对HTTP Server
、GRPC Server
、ORM
组件打印的日志生效。
GoFrame
框架采用了模块化设计,日志组件是框架独立的组件,本章节介绍的配置均只对独立使用日志组件的方式生效,例如使用g.Log()
或者glog.New()
方法创建的日志组件。其他组件的日志配置有专门的配置项,或者日志对象设置方法来实现日志的配置,请具体查看对应的组件文档和API
。
Panel | ||
---|---|---|
| ||
|