Linux平台apapche环境日志切割-cronolog工具详解

作者: sxdgy 分类: apache 发布时间: 2017-03-10 20:52

1、前言

apache服务器默认日志文件是不分割的,一个整文件既不易于管理,也不易于分析统计。本文主要讲cronolog,常用的分割还有:rotatelogs日志切割

2、简介

cronolog是一个简单的过滤程序,它从标准输入读取日志文件条目,并将每个条目写入由文件名模板指定的输出文件以及当前日期和时间。 当扩展文件名更改时,当前文件关闭,并打开一个新文件。 cronolog旨在与Web服务器(如Apache)结合使用,以将访问日志拆分为每日或每月日志。

3、源码安装

# ntpdate 202.120.2.101 #同步时间
# wget http://1288758.d.yyupload.com/down/1288758/linux/cronolog-1.6.2.tar.gz
# tar xzvf cronolog-1.6.2.tar.gz
# cd cronolog-1.6.2
# ./configure
# make && make install
# which cronolog #记住下面的路径,一会用
/usr/local/sbin/cronolog

4、结合apache使用

# vim /usr/local/apache2/conf/httpd.conf #编辑httpd.conf文件

将其中的默认日志: CustomLog "logs/access_log" combined

修改为:CustomLog "|/usr/local/sbin/cronolog logs/access_%Y%m%d.log" combined

其中“/usr/local/sbin/cronolog”是上面提到的CustomLog安装路径;“logs/access_%Y%m%d.log”是Apache存放访问日志路径,可以为相对或绝对路径;%Y%m%d为日志文件分割方式,即为“年月日”。

# /usr/local/apache2/bin/apachectl restart #重启apapche生效

5、cronolog支持%加上字母的转义,参考如下:

n    换行
t    水平制表符

时间域:  

H    小时(00..23)
I    小时(01..12)
p    该locale下的AM或PM标识
M   分钟(00..59)
S    秒 (00..61, which allows for leap seconds)
X    该locale下时间表示符(e.g.: "15:12:47")
Z    时区。若时区不能确定,则无意义

日期域:  

a    该locale下的工作日简名(e.g.: Sun..Sat)
A    该locale下的工作日全名(e.g.: Sunday ..  Satur-ay)
b    该locale下的月份简称(e.g.: Jan .. Dec)
B    该locale下的月份全称(e.g.:  January .. December)
c    该locale下的日期和时间(e.g.: "Sun Dec 15  14:12:47 GMT 1996")
d    当月中的天数 (01 .. 31)
j    当年中的天数 (001 .. 366)
m    月数 (01 .. 12)
U    当年中的星期数,以周日作为一周开始,其中第一周为首个含星期天的星期(00..53)
W    当年中的星期数,以星期一作为一周的开始,其中第一周为首个含星期天的星期(00..53)
w    工作日数(0 .. 6, 0表示星期天)
x    该locale下的日期表示(e.g. "13/04/97")
y    两位数的年份(00 .. 99)
Y    四位数的年份(1970 .. 2038)