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

相关推荐
又来敲代码了2 小时前
k8s的部署
linux·运维·云原生·容器·kubernetes
梦·D·2 小时前
安全运维工具箱sskit_v1.0.3 部署
运维
CDN3602 小时前
DNS 负载均衡技术架构与调度策略解析
运维·架构·负载均衡
忡黑梨2 小时前
eNSP_路由策略
运维·服务器·网络·华为·智能路由器·负载均衡
日取其半万世不竭2 小时前
PostgreSQL 云服务器安装配置指南:从零开始搭建生产数据库
服务器·数据库·postgresql
IT WorryFree2 小时前
FGT-KVM 完整部署极简教程(CentOS 7 + KVM 环境)
linux·运维·centos
上海云盾安全满满2 小时前
网站被攻击了,高防CDN相比与高防服务器有什么优点
运维·服务器
@encryption2 小时前
计算机网络 --- NAT
运维·服务器·计算机网络
goyeer2 小时前
【ITIL4】32服务实践 - 服务变更管理
linux·运维·服务器·数字化·价值·itil
程序员Linc2 小时前
双击nginx.exe5次之后,我的项目管理平台挂了
运维·nginx