当我们的网页上单击一个链接或刷新一下界面,那么Apache在后台的日志文件就会记录一行或几行信息,如果你的网站有可观的访问量,那么一段时间之后你的Apache的日志文件会变得及其臃肿不堪,当服务器出现问题之后,在一个几百兆甚至几个G的日志文件中找到有用的信息会变得及其困难。所以我们就需要定期将足够大的日志文件分割成一个一个小日志,这就是日志轮替。日志轮替其实就是日志切割和日志轮换的结合0
日志切割:就是把旧的日志文件移动并改名,同时建立新的日志文件。那么如何命名呢?
主要依靠/etc/logrotate.cof配置文件的” dateext ” 1.如果配置文件拥有“dateext”参数,那么日志就会用日期来作为日志文件的后缀,例如“access_log-20150517”。这样的话日志文件命就不会重叠,所以就不需要日志文件改名啦。 2.如果配置文件啊当中没有“dateext”参数,那么日志文件就需要进行改名,当第一次日志轮替时么当前的“access_log”日志会改名为“access_log.1”,让后新建“access_log”文件,当进行第二次日志轮替时“access_log.1”会改名为“access_log.2”,而“access_log”文件会改名为“access_log.1”然后新建“access_log”文件来保存新的日志信息。以此类推。日志替换:当旧的日志超过保存的范围之后,就会删除时间最早的日志。
下面本文将以Apache距离进行日志轮替
注意:rpm包安装的Apache是不需要进行轮替设置的,默认就开启日志轮替,如果需要只需修改参数即可。而源码包安装的Apache自带的配置文件只支持日志切割,而没有日志替换,不会删除旧的日志。这是就需要借助系统的日志轮替工具logrotatelogrotate的配置文件是/etc/logrotate.conf这里面记录啦需要进行日志替换的日志文件配置,我们只需要在这个文件中将Apache的日志文件写入这个配置文件即可;
内容详解
/usr/local/apache/logs/access_log { #Apache日志文件的绝对路径
daily#日志轮替的周期是天
dateext#使用日期做日志文件的后缀名
notifempty#如果日志文件为空将不进行轮替
rotate 30#保留的日志文件个数。如果写0是是指没有备份
}
保存退出
上述设置完成后Apache的日志文件就会进行轮替
logrotate配置文件参数:
daily | 日志的轮替周期是每天 |
weekly | 日志的轮替周期是每周 |
monthly | 日志的轮替周期是每月 |
rotate | 数字保留的日志文件的个数。0指没有备份 |
compress | 日志轮替时,旧的日志进行压缩 |
create mode owner group | 建立新日志,同时指定新日志的权限与所有者和所属组。如create0600 root utmp |
mail address | 当日志轮替时,输出内容通过邮件发送到指定的邮件地址。如mail 123456@qq.com |
missingok | 如果日志不存在,则忽略该日志的警告信息 |
notifempty | 如果日志为空文件,则不进行日志轮替 |
minsize
| 大小日志轮替的最小值。也就是日志一定要达到这个最小值才会轮替,否则就算时间达到也不轮替 |
dateext
| 使用日期作为日志轮替文件的后缀。如secure-20130605 |
sharedscripts | 在此关键字之后的脚本只执行一次 |
prerotate/endscript | 在日志轮替之前执行脚本命令。endscript标示prerotate脚本结束。 |
postrotate/endscript | 在日志轮替之后执行脚本命令。endscript标示postrotate脚本结束 |
logrotate命令介绍
logrotate [选项] 配置文件名
选项:如果没有选项将按照配置文件中的内容进行日志轮替
-v: 显示日志轮替过程-f: 强制进行日志轮替,不管啊日志轮替的条件是否符合,强制配置文件中所有的 日志进行轮替配置文件一般都是/etc/logrotate.conf文件