当我们的网页上单击一个链接或刷新一下界面,那么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自带的配置文件只支持日志切割,而没有日志替换,不会删除旧的日志。这是就需要借助系统的日志轮替工具logrotate

         logrotate的配置文件是/etc/logrotate.conf这里面记录啦需要进行日志替换的日志文件配置,我们只需要在这个文件中将Apache的日志文件写入这个配置文件即可;

wKioL1Vy5XGDJ7mpAAGHCXRg91g626.jpg

内容详解

 /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文件