关于增加skynet_fly 日志分割模块
起因
通过群友对skynet_fly的使用测试,发现使用系统日志分割系统会有两个问题。
- 软件问题 可能有些系统并不会默认装载logrotate分割软件。
- 权限问题 非root用户可能无法在
/etc/logrotate.d/
新增文件。
就此埋下了我想实现一个内置日志分割模块的决心。
项目修改
- 修改原来的
run.sh
不再启动即配置日志分割。 - 把使用系统日志分割变成一个可选项,增加了
create_logrotate.sh
,可以主动调用配置。 - 内置新增
log_rotate_m.lua
日志分割模块。
提供功能
我没有去增加太多的配置项,我是按照我个人使用日志分割的场景来做的,后续如果有优秀建议,也可修改。
主要提供了两个功能,切割,保留历史日志文件整理。
- 切割 我目前写死了每天凌晨进行切割和整理,还做了文件至少多大才切割。
- 保留历史日志文件整理 提供了保留多少天内,和保留多少个文件的配置。
实现原理
到点重命名日志文件,通过hup消息通知skynet
日志服务重新打开日志文件,这种方式不会丢失日志,也不会占用内存。
配置项说明
1 |
|
sys_cmd就是调用系统命令给skynet发送HUP信号,skynet logger服务收到HUP信号就会重新打开日志文件。
使用示例
模块实现路径
总结
增加skynet_fly内置日志分割,为skynet_fly扩展了可选使用功能。
skynetfly源码地址
关于增加skynet_fly 日志分割模块
https://huahua132.github.io/2023/09/10/skynet_fly_ss/logrotate/