温馨提示×

centos syslog怎样分割

小樊
39
2026-10-17 13:58:34
栏目: 智能运维

在 CentOS 中,“syslog 分割”通常指的是日志轮转(log rotation),最常见的方式是使用 logrotate。下面按常见场景说明。


一、使用 logrotate(推荐,CentOS 默认)

CentOS 默认用 rsyslog + logrotate 管理日志。

1. 查看 syslog 日志文件

常见路径:

/var/log/messages
/var/log/secure
/var/log/maillog

2. 查看已有 syslog 轮转配置

cat /etc/logrotate.d/syslog

典型内容(CentOS 7):

/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
    missingok
    sharedscripts
    postrotate
        /bin/kill -HUP `cat /var/run/syslogd.pid 2>/dev/null` 2>/dev/null || true
    endscript
}

二、自定义 syslog 分割规则

示例:每天分割,保留 7 天,压缩

编辑或新建:

vi /etc/logrotate.d/syslog-custom

内容示例:

/var/log/messages
/var/log/secure
{
    daily
    rotate 7
    compress
    delaycompress
    missingok
    notifempty
    create 0640 root root
    sharedscripts
    postrotate
        systemctl kill -s HUP rsyslog.service
    endscript
}

说明:

  • daily:每天分割
  • rotate 7:保留 7 个历史文件
  • compress:压缩旧日志
  • create:新建日志文件
  • postrotate:通知 rsyslog 重新打开日志

三、手动测试 logrotate

logrotate -d /etc/logrotate.conf   # 调试(不真正执行)
logrotate -f /etc/logrotate.conf   # 强制执行

四、按大小分割(可选)

如果你希望日志达到一定大小就分割:

/var/log/messages
{
    size 100M
    rotate 5
    compress
    missingok
    notifempty
    create 0640 root root
    postrotate
        systemctl kill -s HUP rsyslog.service
    endscript
}

五、rsyslog 自身按时间/大小分割(高级)

如果你不想用 logrotate,也可以在 rsyslog 中配置:

module(load="imfile")

或使用 omfile + dynafile + rollingInterval

但通常不建议,logrotate 更简单稳定。


六、常见坑

  1. rsyslog 不重开日志 → 日志继续写旧文件
    解决:postrotate 里 HUP rsyslog
  2. SELinux 导致权限问题
    解决:检查 /var/log 上下文
  3. CentOS 6 / 7 / 8 命令不同
    • CentOS 6:service rsyslog reload
    • CentOS 7+:systemctl kill -s HUP rsyslog

如果你能告诉我:

  • CentOS 版本(6/7/8/Stream)
  • 想分割哪个日志
  • 按时间还是大小

我可以给你一份可直接用的配置。

0 踩