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

相关推荐
追风林11 小时前
idea支持本地 的 服务器 远程debug
java·服务器·intellij-idea
vpk11211 小时前
【无标题】
运维·elasticsearch·docker
yuuki23323311 小时前
【Linux】开发工具链全解析:从 apt 到 gdb
linux·运维·服务器
蓝队云计算12 小时前
蓝队云揭秘:如何利用云服务器高效养殖龙虾OpenClaw?
运维·服务器·人工智能·云服务器·openclaw
ZTLJQ12 小时前
驾驭高并发:Python协程与 async/await 完全解析
服务器·数据库·python
浪游东戴河12 小时前
网线简介及分类
运维·服务器·网络
不知名。。。。。。。。12 小时前
仿muduo库实现高并发---请求HttpRequest模块 响应HttpResponse模块
服务器·c++
国冶机电安装12 小时前
自动化工程:推动工业智能化与效率提升的核心技术
运维·自动化
薛定谔的悦13 小时前
嵌入式 OTA(远程固件升级)(二)
服务器·数据库·能源·储能·ota
一殊酒13 小时前
【Docker】快速入门指南
运维·docker·容器