日志切割工具cronolog详解


       大家都知道apache服务器,默认日志文件是不分割的,一个整文件既不易于管理,也不易于分析统计。本文主要讲解Web服务器日志切割工具cronolog,下面我们就来详细的讲解一下。


1.上传及安装日志轮询工具cronolog

1.1解压日志轮询工具cronolog

[root@localhost tools]# tar -zxvf cronolog-1.6.2.tar.gz       #解压cronolog安装包

[root@localhost tools]# cd cronolog-1.6.2

1.2安装日志轮询工具cronolog

[root@localhost cronolog-1.6.2]# ./configure       #配置

[root@localhost cronolog-1.6.2]# make                #编译安装

[root@localhost cronolog-1.6.2]# make install


2.cronolog日志轮询配置说明。

编辑apache配置文件

[root@localhost ~]# vim /usr/local/apache/conf/httpd.conf 

利用vim命令定位CustomLog    如下图所示 

日志切割工具cronolog详解_第1张图片


错误写法:

CustomLog“|/usr/local/sbin/cronolog    logs/access_www_%w.log”combined

提示:cronolog轮询日志的正确写法,被轮询的日志路径要写全路径。

正确写法:

新建日志保存路径:

[root@localhost ~]# mkdir -p /website/logs     #日志的存储路径

[root@localhost ~]# tree /website                     #检查新建日志文件结果

/website

`-- logs

按天轮询(生产环境常见用法,推荐使用):

CustomLog“|/usr/local/sbin/cronolog     /website/logs/access_www_%Y%m%d.log”combined

提示:这是大多数网站的常规配置方法(按天记录日志,日志不会自动覆盖)


按小时轮询(生产环境较常见用法)

CustomLog“|/usr/local/sbin/cronolog     /website/logs/access_www_%Y%m%d%H.log”combined

提示:如果需要及时详细分析apache日志,此配置可能比较适用。结尾_%Y%m%d%H为日期的格式写法。


按周轮询(生产环境常见用法)

CustomLog“|/usr/local/sbin/cronolog     /website/logs/access_www_%w.log”combined


下面我们以按天轮询进行示例:

编辑配置文件/usr/local/apache/conf/httpd.conf  

注释如下内容:

CustomLog "logs/access_log" common

增加如下内容:

CustomLog“|/usr/local/sbin/cronolog     /website/logs/access_www_%Y%m%d.log”combined

具体如下图所示:

日志切割工具cronolog详解_第2张图片





保存修改;


3.检查日志生成情况

1)打开浏览器:输入http://x.x.x.x (x.x.x.x为apache服务器IP地址);

2)[root@localhost ~]# cd /website/logs/        #进入日志保存文件夹

     [root@localhost logs]# ll                               #检查访问日志生成情况

     total 8

     -rw-r--r--. 1 root root 405 Jun  5 01:35 access_www_20160605.log

    -rw-r--r--. 1 root root 186 Jun  6 16:43 access_www_20160606.log

经过测试检验,日志已按天轮询;


4.指定计划任务:每天打包前一天的日志,每天删除半月前的打包日志(利用crontab定时任务,具体操作如下)

[root@localhost ~]# crontab -e

0 1 * * * /usr/sbin/ntpdate pool.ntp.org > /dev/null 2>&1   #每天一点钟同步时间

30 1 * * * /bin/tar -zcf /website/logs/access_www_`date -d yesterday +%Y%m%d` .tar.gz /website/logs/access_www_`date -d yesterday +%Y%m%d`.log#每天1点30分打包前一天的日志文件

0 2 * * * /usr/bin/find /website/logs -name access_www_*.tar.gz -mtime +15 -exec rm -rf {} \;  #每天2点删除15天前的打包日志文件


5.cronolog 总结 


好了,到这里我们的cronolog工具就讲解完成了。有博友会问为什么不用apache自带的日志分割工具?apache自带的日志分割工具rotatelogs,据说在进行日志切割时容易丢日志,所以这里我们就用cronolog来做日志切割。最后,希望大家有所收获^_^……