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

相关推荐
Rockbean16 小时前
用40行代码搭建自己的无服务器OCR
服务器·python·deepseek
蝎子莱莱爱打怪19 小时前
Centos7中一键安装K8s集群以及Rancher安装记录
运维·后端·kubernetes
茶杯梦轩19 小时前
CompletableFuture 在 项目实战 中 创建异步任务 的核心优势及使用场景
服务器·后端·面试
海天鹰1 天前
【免费】PHP主机=域名+解析+主机
服务器
DianSan_ERP1 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
呉師傅2 天前
火狐浏览器报错配置文件缺失如何解决#操作技巧#
运维·网络·windows·电脑
不是二师兄的八戒2 天前
Linux服务器挂载OSS存储的完整实践指南
linux·运维·服务器
芝士雪豹只抽瑞克五2 天前
Nginx 高性能Web服务器笔记
服务器·nginx
失重外太空啦2 天前
Tomcat
java·服务器·tomcat
zhangfeng11332 天前
趋动云 如何ssh登录 服务区 项目server
运维·人工智能·ssh