[模板] Linux 日志轮转保存的配置模板 ( 以 messages 日志的 /etc/logrotate.d/ 目录里的配置模板为例)

正文:

步骤一:将 messages 日志的 logrotate 配置文件分离出来

# vim /etc/logrotate.d/syslog

删除以下内容:

......
/var/log/messages
......

步骤二:创建 messages 日志的 logrotate 配置文件

2.1 案例一

# vim /etc/logrotate.d/messages

创建以下内容:

/var/log/messages
/var/log/secure
/var/log/maillog
{
    delaycompress
    dateext
    rotate 5
    missingok
    notifempty
    weekly
    create 755 root root
    sharedscripts
    postrotate
        /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
    endscript
}


补充:这里以:
1) 影响的日志文件有 /var/log/messages、/var/log/secure 和 /var/log/maillog (/var/log/messages /var/log/secure /var/log/maillog)
2) 备份的日志文件以日期的形式结尾 (dateext)
3) 对备份的日志文件进行压缩 (delaycompress,默认使用 gz 格式进行压缩)
4) 备份的日志文件保留 5 份 (rotate 5)
5) 如果现有日志文件丢失,则不报错直接生成新的日志文件 (missingok)
6) 如果现有日志文件是空文件,则不再对日志文件进行备份 (notifempty)
7) 每周将现在的日志文件进行备份并生成新的日志文件 (weekly)
8) 日志文件权限是 0755 所属主是 root 所属组是 root (create 755 root root)
9) 在所有的现在的日志文件都备份并生成新的日志文件以后再统一执行脚本(sharedscripts,如果没有这个参数则每个日志文件在完成了这一动作后会各自单独执行脚本)
为例

2.2 案例二

# vim /etc/logrotate.d/messages

创建以下内容:

/var/log/messages
/var/log/secure
/var/log/maillog
{
    dateext
    compress
    rotate 4
    missingok
    notifempty
    daily
    create
    olddir /var/log/message/old
    copytruncate
        /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
    endscript
}


补充:这里以:
1) 影响的日志文件有 /var/log/messages、/var/log/secure 和 /var/log/maillog (/var/log/messages /var/log/secure /var/log/maillog)
2) 备份的日志文件以日期的形式结尾 (dateext)
3) 对备份的日志文件进行压缩 (compress,默认使用 gz 格式进行压缩)
4) 备份的日志文件保留 4 份 (rotate 5)
5) 如果现有日志文件丢失,则不报错直接生成新的日志文件 (missingok)
6) 如果现有日志文件是空文件,则不再对日志文件进行备份 (notifempty)
7) 每日将现在的日志文件进行备份并生成新的日志文件 (daily)
8) 日志文件的权限是默认权限 (create)
9) 将轮转钱的旧日志转移到目录 /var/log/message/old 中
10) 轮转时不关闭原日志,而是创建 1 个要被轮转的备份,轮转它,然后再将原日志清空 (copytruncate)
为例

步骤二:让创建的 messages 日志的 logrotate 配置文件生效

# systemctl restart rsyslog

参考文献:

https://www.redhat.com/en/blog/setting-logrotate