什么是 logrotate(日志轮换)?
logrotate 旨在简化生成大量日志文件的系统的管理。
它允许自动轮换、压缩、删除和邮寄日志文件。
每个日志文件可以每天、每周、每月或者当它变得太大时处理。
让我们看看 logrotate 的主要配置文件是 /etc/logrotate.conf
# rotate log files weekly weekly # keep 4 weeks worth of backlogs rotate 4 # create new (empty) log files after rotating old ones create # use date as a suffix of the rotated file dateext # uncomment this if you want your log files compressed #compress # RPM packages drop log rotation information into this directory include /etc/logrotate.d # no packages own wtmp and btmp -- we'll rotate them here /var/log/wtmp { monthly create 0664 root utmp minsize 1M rotate 1 } /var/log/btmp { missingok monthly create 0600 root utmp rotate 1 }
现在注释部分解释了大部分使用的参数。
并且此文件中没有任何可更改的内容,因此使用默认值即可。
设置 logrotate
为了演示,我在 /var/log 中创建了一个新的日志文件 firewall.log,它将包含所有与 iptables 相关的日志。
接下来在 /etc/logrotate.d 中创建一个新文件,如下所示
# cd /etc/logrotate.d # touch firewall.log
可用于配置logrotate的参数及其值如下所示
参数 | 描述 |
---|---|
compress | 默认情况下,GZIP压缩了日志文件的旧版本。 |
create mode owner group | 旋转后立即(在运行Postrotate脚本之前)创建日志文件(具有与日志文件相同的名称刚刚旋转)。 Mode指定八进制的日志文件的模式所有者指定将拥有日志文件的用户名, Group指定日志文件所属的组。 |
daily/weekly/monthly/yearly | 日志文件按照所用的值旋转 |
minsize size | 日志文件在增大较大的大小字节时旋转,但不是在另外指定的时间间隔之前(每日,每周,每月或者每年 |
missingok | 如果缺少日志文件,请在不发出错误消息的情况下继续到下一个。 |
size size | 当它们变大时大小字节时,日志文件会旋转。如果尺寸后跟m,则尺寸如果假定为兆字节。如果使用k,则大小为千字节。 |
notifempty | 如果它是空的,请勿旋转日志(这覆盖IFEMPTY选项)。 |
根据我们对日志文件轮换的要求添加条目。
下面是我的服务器上的一个示例
# less /etc/logrotate.d/firewall.log /var/log/firewall.log { missingok compress rotate 2 notifempty size 30k daily create 0600 root root }
完成后保存文件。
验证配置
我们可以手动添加一些内容到我们的 firewall.log 来验证配置
# seq 1000 > firewall.log
# ll firewall.log -rw------- 1 root root 3893 Jun 26 11:02 firewall.log
所以让我们尝试强制轮换日志文件
# logrotate -f /etc/logrotate.conf
查看日志变更信息
# ls -l firewall.log* -rw------- 1 root root 0 Jun 26 11:02 firewall.log -rw------- 1 root root 1848 Jun 26 11:02 firewall.log-20140626.gz
所以我们最后的 firewall.log 文件被压缩,你可以看到大小从 3893 字节变为 1848 字节,并且创建了一个具有 0600 权限的新 firewall.log 文件。
日期:2020-06-02 22:18:27 来源:oir作者:oir