logrotate与syslog(rsyslog)分工明确:syslog负责持续写入日志,logrotate负责按规则轮转、压缩和清理已生成的日志文件;二者为上下游协作关系,不可替代。

logrotate 和 syslog(或其现代实现 rsyslog)分工明确、协同工作:syslog 负责“写日志”,logrotate 负责“管日志”。两者不重叠、不替代,而是上下游关系——syslog 持续生成并追加日志内容到文件,logrotate 在后台按规则对这些已生成的文件做切割、压缩和清理。
syslog 是日志的“生产者”
syslog(实际多为 rsyslogd 进程)是系统默认的日志守护进程,它监听内核、服务、应用发来的日志消息,按 facility + priority 规则分拣,并写入指定文件(如 /var/log/syslog、/var/log/auth.log)。它本身不管理文件大小或保留周期,只管持续追加写入。若无干预,一个日志文件可能无限增长,最终撑爆磁盘。
logrotate 是日志的“管家”
logrotate 不参与日志内容生成,只定期检查日志文件是否满足轮转条件(如 daily、size 100M),然后执行:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 将当前日志重命名(如
syslog→syslog.1) - 可选压缩旧文件(
syslog.1.gz) - 按
rotate N保留最近 N 个归档 - 自动删除超出数量的最老归档
- 通过
postrotate发送信号(如kill -HUP)通知 rsyslog 新建日志文件继续写
配置上各自独立但需配合
两者配置文件分离,但关键处要对齐:
- rsyslog 配置在
/etc/rsyslog.conf或/etc/rsyslog.d/*.conf,定义日志写入路径 - logrotate 配置在
/etc/logrotate.conf(全局)和/etc/logrotate.d/(服务专属,如rsyslog文件) -
postrotate中的重启命令必须匹配实际运行的进程(rsyslogd而非过时的syslogd) - 若使用
copytruncate,可避免中断写入,但需确保应用支持清空原文件
验证与调试很直接
日常运维中可快速确认二者是否正常协作:
- 查 rsyslog 是否运行:
systemctl status rsyslog - 看日志文件是否在更新:
ls -lt /var/log/syslog* - 手动触发轮转测试:
logrotate -vf /etc/logrotate.d/rsyslog - 检查轮转后是否有
.gz文件、syslog.1是否生成、新syslog是否为空且可写










