You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Debian主机rsyslog日志轮转出现嵌套后缀问题求助

解决Debian中rsyslog日志轮转嵌套后缀问题

问题现象

/var/log/rsyslog/目录下的日志文件出现多层嵌套日期后缀,命名混乱,示例如下:

log_server.x.log_2023-01-31.gz_2023-02-02.gz_2023-02-04.gz_2023-02-08.gz_2023-02-10.gz_2023-02-12.gz_2023-02-14.gz_2023-02-16.gz_2023-02-18.gz_2023-02-20_2023-02-22_2023-02-22
log_server.x.log_2023-02-01.gz_2023-02-03.gz_2023-02-05.gz_2023-02-07.gz_2023-02-09.gz_2023-02-11.gz_2023-02-13.gz_2023-02-15.gz_2023-02-17.gz_2023-02-19.gz_2023-02-21_2023-02-22_2023-02-22

当前logrotate配置

/var/log/rsyslog/* {
        rotate 30
        daily
        dateext
        dateformat -%Y%m%d
        create 0644 root root
        compress
        delaycompress
        postrotate
               /usr/bin/killall -HUP rsyslogd
        endscript

}

问题根源

配置里用/var/log/rsyslog/*作为匹配规则,会把**已经轮转完成的压缩日志(比如.gz文件)**也纳入处理范围。logrotate每次运行时,会误将这些已归档的文件当作活跃日志再次轮转,重复添加日期后缀和压缩操作,最终形成嵌套后缀。

解决步骤

  1. 修正logrotate匹配规则
    只匹配rsyslog正在写入的原始日志文件(比如以.log结尾的文件),避免误处理已归档的压缩文件。修改后的配置如下:
/var/log/rsyslog/*.log {
        rotate 30
        daily
        dateext
        dateformat -%Y%m%d
        create 0644 root root
        compress
        delaycompress
        postrotate
               /usr/bin/killall -HUP rsyslogd
        endscript
}

如果你的原始日志不是.log后缀,替换成对应后缀或精确文件名即可,核心是只匹配活跃日志。

  1. 清理现有混乱日志
    手动删除那些带有多层嵌套后缀的无效日志,示例命令:
cd /var/log/rsyslog/ && rm -f log_server.x.log_*_2023-*

根据实际文件名调整匹配规则,确保只删除混乱的日志文件。

  1. 验证配置有效性
    先执行测试命令,检查配置是否有语法错误:
logrotate -d /etc/logrotate.d/rsyslog  # 替换为你的配置文件实际路径

确认无报错后,手动触发一次轮转,验证新日志的命名是否正常:

logrotate -f /etc/logrotate.d/rsyslog

内容的提问来源于stack exchange,提问作者beard black

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 00:57:29