滚动切分
简要说明如下:
RotateSize
用于设置滚动切分时按照文件大小进行切分,该属性的单位为字节。只有当该属性值大于0时才会开启滚动切分的特性。RotateExpire
用于设置滚动切分时按照文件超过一定时间没有修改时进行切分。只有当该属性值大于0时才会开启滚动切分的特性。RotateBackupExpire
用于设置按照过期时间进行清理。当切分文件超过指定的时间时将会被删除。RotateBackupCompress
用于设置切分文件的压缩级别,默认为0表示不压缩。该压缩级别的取值范围为1-9
,其中9
为最大压缩级别。RotateCheckInterval
用于设置定时器的定时检测间隔,默认为1小时,往往不需要设置。
从以上滚动切分的配置项可以看到,仅有当RotateSize
或者RotateExpire
配置项被设置时才会生效,默认情况下是关闭的。
glog
模块的日志输出文件固定格式为*.log
,即使用.log
作为日志文件名后缀。为方便统一规范管理,切分文件的格式也是固定的,开发者无法自定义。当日志文件被滚动切分时,当前被切分的日志文件将会按照”*.切分时间.log
“的格式进行重命名。其中的格式为:年月日时分秒毫秒微秒
,例如:
-
简要说明:
- 可以看到
RotateSize
配置项在配置文件中支持使用字符串的形式进行设置,例如:100M
,200MB
,500KB
,1Gib
等等,在该示例中,我们设置日志文件大小超过100M
时进行切分。 - 同时,
RotateBackupExpire
的配置项也支持字符串配置,例如:1h
,30m
,1d6h
,7d
等等,在该示例中,我们设置切分文件的过期时间为7d
,即七天后会自动删除该切分文件。
- 可以看到
示例2,按照日志文件修改过期进行滚动切分:
在这里,我们设置
RotateExpire
为1d
表示当某个日志文件超过一天都没有任何修改/写入时,glog
模块将会自动将其进行滚动切分。同时进行压缩存储。
- (推荐)全局使用同一个默认的日志单例对象(
g.Log()
),通过Cat
或File
方法设置输出日志文件到不同的目录或文件名。 - 将不同日志对象的输出目录(
Path
配置项)设置为不同的文件目录,并且多个日志对象的日志目录不存在相互的层级关系。
例如:
我们有两类业务日志文件order
和promo
,分别对应订单业务和促销业务,我们先假定他们属于同一个服务程序中。
假如日志路径为/var/log
,我们可以:
- 通过
g.Log().Cat("order").Print(xxx)
输出订单日志。生成的日志文件例如:/var/log/order/2020-03-26.log
。 - 通过
g.Log().Cat("promo").Print(xxx)
输出促销日志。生成的日志文件例如:/var/log/promo/2020-03-26.log
。
也可以通过:
- 通过
g.Log().File("order").Print(xxx)
输出订单日志。生成的日志文件例如:/var/log/order.log
。