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

相关推荐
Sayai5 小时前
Hadoop 集群安全加固实战:YARN 未授权访问漏洞修复,firewalld 白名单 + Nginx 反向代理 Basic Auth 全流程
运维·hadoop·nginx·安全·网络安全
云飞云共享云桌面6 小时前
智能装备数字化转型:云飞云云桌面助力苏州工厂共享 SolidWorks 算力
运维·服务器·3d·自动化·制造
yichengerp6 小时前
中小电子厂用什么ERP?电子厂ERP管理软件实施要点与易呈方案推荐
大数据·运维·人工智能·云计算·制造
励志师code6 小时前
RoCE 网络实战:从 NCCL 调优到 RDMA 硬件计数器排障
linux·运维·网络·云计算
程序员-Benothing6 小时前
Linux进程优先级与调度:nice、renice、CPU亲和性实战
linux·运维·服务器
程序员-Benothing6 小时前
Linux进程前后台管理:jobs、fg、bg、nohup、disown
linux·运维·服务器
JavaEdge.6 小时前
Docker Compose部署Dify
运维·docker·容器
企业解惑小助手6 小时前
大型企业终端如何统一管理排障实录:批量终端策略不生效问题排查
运维·服务器·网络·域智盾软件
luo_guibin7 小时前
almalinux9新系统常规命令操作
运维·服务器
CrazyMo_7 小时前
鸿蒙高级——内存专用之linux-reserve-memory 方案简介
linux·运维·服务器