ZLMediaKit 日志按日期切割与自动清理方案

📜 ZLMediaKit 日志按日期切割与自动清理方案

我的目的是让我的流媒体日志按日期存储,并且只保留最近一周的日志,超过的自动删除。这里可以用 logrotate 工具来实现,它是 Linux 系统自带的日志管理工具,非常适合这个场景。


1. 创建 logrotate 配置文件

首先,创建一个专门针对 ZLMediaKit 的 logrotate 配置文件:

bash 复制代码
vim /etc/logrotate.d/zlmediakit

在文件中写入以下配置:

conf 复制代码
/var/log/zlmediakit.log /var/log/zlmediakit_error.log {
    # 每天切割一次日志
    daily
    # 保留最近7天的日志
    rotate 7
    # 切割时创建新的空日志文件
    create
    # 日志文件为空时不进行切割
    notifempty
    # 切割前将日志文件内容复制一份,再清空原文件
    copytruncate
    # 压缩旧日志(可选,节省磁盘空间)
    compress
    # 延迟压缩,避免刚切割就压缩影响查看
    delaycompress
    # 切割后的日志文件名格式:原文件名-日期
    dateext
    # 日期格式为 YYYYMMDD
    dateformat -%Y%m%d
}

2. 配置说明

配置项 作用
daily 每天执行一次日志切割
rotate 7 只保留最近7天的日志,超过的自动删除
copytruncate 先复制日志内容再清空原文件,避免 ZLMediaKit 进程因为日志文件被删除而报错
dateext + dateformat 让切割后的日志文件名带上日期,比如 zlmediakit.log-20260116
compress 自动压缩旧日志,减少磁盘占用

3. 测试配置是否生效

配置完成后,可以手动执行一次测试,验证配置是否正确:

bash 复制代码
logrotate --force /etc/logrotate.d/zlmediakit

执行后可以去 /var/log/ 目录下查看是否生成了带日期的日志文件,比如 zlmediakit.log-20260116


运行后,我的文件已经分出来日期了。

4. 确保 logrotate 自动运行

logrotate 通常会通过系统的 cron 定时任务每天自动执行,默认的 cron 配置在 /etc/cron.daily/logrotate

你可以检查这个文件是否存在,确保它有可执行权限:

bash 复制代码
ls -l /etc/cron.daily/logrotate

如果权限不足,执行以下命令添加权限:

bash 复制代码
chmod +x /etc/cron.daily/logrotate

相关推荐
一池秋_3 小时前
arm低配linux设备,桌面应用冷启动提速方法
linux·运维·arm开发
上海云盾-小余4 小时前
流量攻击复盘:为什么 WAF 完好,业务依旧瘫痪
运维·服务器·网络
IT大白鼠4 小时前
Docker 私有仓库管理:Harbor 企业级仓库搭建与镜像全生命周期管理
运维·docker·容器
戴西软件5 小时前
戴西iDWS.3DViz Suite数据轻量化可视化软件,从传统桌面软件向云端协同的重大突破
大数据·运维·网络·人工智能·机器学习·3d
我命由我123456 小时前
Linux - Linux/POSIX 路径斜杠折叠规则
linux·运维·服务器·android studio·android jetpack·android-studio·android runtime
姚不倒6 小时前
Nginx 反向代理:5 种负载均衡策略与实战
运维·nginx·负载均衡
Uncertainty!!7 小时前
Linux 主机无法完成校园网认证排查记录:从 DHCP、ARP 到 Portal 认证流程分析
linux·运维·服务器
其实防守也摸鱼7 小时前
权限提升与横向移动:从内网渗透到域控的完整技术图谱
运维·服务器·数据库·安全·github·copilot·渗透
代码方舟7 小时前
零信任架构实战:基于天远车辆估值构建自动化二手车评估网关
运维·人工智能·架构·自动化
bgy66667 小时前
从零上手 Docker,容器技术完整入门指南
运维·docker·容器