日志轮询设置linux,日志轮询──日志文件按文件大小轮询

日志轮询是linux中对日志文件的一种处理方式,为防止日志文件过大造成一些应用的问题。

日志轮询的原理是:按时间或者按文件大小,将日志文件更名,让应用将新的日志写入新的文件中,旧的日志文件可以设置保留一段时间以备检查。

linux中日志轮询的服务是logrotate,主配置文件是/etc/logrotate.conf和/etc/logrotate.d中的文件。在红旗所有系统中,日志轮询默认是每一周轮转一次日志,保留4个旧日志文件备份。

如何将某日志文件按照文件大小轮转呢?

比如:/var/log/httpd/access_log文件,当达到10M时就轮转一次。

可以通过修改/etc/logrotate.d/httpd配置文件来解决。修改之后如下(其中添加了size=10M,rotate 4):

/var/log/httpd/*log {

size=10Mrotate 4

missingok

notifempty

sharedscripts

postrotate

/bin/kill -HUP `cat /var/run/httpd.pid 2>/dev/null` 2> /dev/null || true

endscript

}

那么测试一下,往/var/log/httpd/access_log中写入信息,直到此文件大小超过10M,但是没有所想像的会生成一个/var/log/httpd/access_log.1文件。为何?

其实logrotate并非是一个daemon进程,所以logrotate不是时时监控这些日志文件的,而是通过crond计划任务来执行的:

[root@ASIANUX3 logrotate.d]# cat /etc/cron.daily/logrotate

#!/bin/sh

/usr/sbin/logrotate /etc/logrotate.conf

EXITVALUE=$?

if [ $EXITVALUE != 0 ]; then

/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"

fi

exit 0

[root@ASIANUX3 logrotate.d]#

可见,是每天的4:02执行logrotate进行各日志文件检查,如果符合条件的,就会进行日志轮转。

为了验证刚才对httpd修改有效,可以手工执行/usr/sbin/logrotate

/etc/logrotate.conf,就会看到/var/log/httpd/access_log.1文件生成了,原来/var/log

/httpd/access_log大小变成了0。

问题:为何说logrotate是每天4:02执行一次呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值