logrotate关于日志轮询和分割
如果你的是源码包安装的服务,那么对于Linux服务器上的一些服务在运行当中产生的日志很重要,可以判断你的服务是否有异常等,但源码包安装的日志是没有日志的轮询或者说是切割能力的,
所以你就需要用到bash脚本来做或者用其他语言,但我这里来介绍下一个RHEL系列的工具 logrotate 他可以轻松的帮你实现日志的轮询。像RHEL和CentOS都默认安装了该服务。你可以直接
编辑/etc/logrotate.conf 来实现对相应日志文件的轮询:
例如典型的apache日志,
首选我来说下列子然后在详细说他的参数:
我的编译安装的apache是在/usr/local/apache2/logs
这里记录了我的所有apache的日志文件包括虚拟主机的文件。
[root@app logs]# vi /etc/logrotate.conf # see "man logrotate" for details # rotate log files weekly # see "man logrotate" for details # 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 } /usr/local/apache2/logs/*_log{ daily create rotate 30 }
我在下面加入了我的apache的log文件下所有以_log结尾的文件
这样无论我将来在添加新的虚拟主机太也会生效。
当然我们可以用:logrotate -v /etc/logrotate.conf 来查看我们现在生效的日志配置,在里面我可以再最后看到我添加的apache日志中有了我的虚拟主机命名的日志文件信息
如果想让你现在的配置就生效的话 你可以使用 :[root@app logs]# logrotate -f /etc/logrotate.conf 这就可以强制执行该配置文件中的信息。这个需要注意的是尽力不要用在线上服务器
配置介绍:
1.日志的命名规则
如果配置文件中有dateext参数,那么日志会用日期来作为日志文件的后缀, 例如:"mail-20150722" 这样可以保证日志不会重叠覆盖。也不需要日志文件改名。只需要自定文件的个数删除多余的日志文件即可。
如果配置文件中没有dateext参数,那么日志文件就需要进行改名,当第一次进行日志轮替时,当前的日志文件名,会修改为"日志文件名.1"然后在重新生成一个新的文件名称为 日志文件名记录数据,以此类推就比如像手。枪子弹夹装弹一样,新的加入会成为第一个后面的会成为第二个在后面的又二变成三
2.配置文件及相应的配置参数介绍:(该图来自网络如有版权问题可留言修改)