Apache日志切割

为什么要分割日志?

Apache中的网站,访问日志都是在一个文件中包含着的,时间一长,文件会特别大,根本无法打开查看了。

日志的格式

cat /usr/local/apache2/conf/httpd.conf | grep LogFormat


%A星期名全称(本地的)

%a         3个字符的星期名(本地的)

%B         月份名的全称(本地的)

%b           3个字符的月份名(本地的)

%c          日期和时间(本地的)

%d        2位数的一个月中的日期数

%H        2位数的小时数(24小时制)

%I         2位数的小时数(12小时制)

%j           3位数的一年中的日期数

%M         2位数的分钟数

%m         2位数的月份数

%p          am/pm12小时制的上下午(本地的)

%S           2位数的秒数

%U           2位数的一年中的星期数(星期天为一周的第一天)

%W          2位数的一年中的星期数(星期一为一周的第一天)

%w           1位数的星期几(星期天为一周的第一天)

%X            时间(本地的)

%x            日期(本地的)

%Y           4位数的年份

%y            2位数的年份

%Z           时区名

%%          符号"%"本身


配置日志分割文件

vim /usr/local/apache2/conf/extra/httpd-vhosts.conf

这里使用了日志分割工具/usr/local/apache2/bin/rotatelogs,其中 管道符代表交给日志分割工具来处理,%Y年份%m月份%d日,86400代表一天的秒数

rotatelogs -l logfile [ rotationtime [ offset ]] | [ filesizeM ]

-l    使用本地时间代替GMT时间作为时间基准。注意:在一个改变GMT偏移量(比如夏令时)的环境中使用-l会导致不可预料的结果。

rotationtime 日志文件滚动的以秒为单位的间隔时间。  

offset    相对于UTC的时差的分钟数。如果省略,则假定为0,并使用UTC时间

filesizeM      指定以filesizeM文件大小滚动,而不是按照时间或时差滚动。

ErrorLog  "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/aaa-error-%Y%m%d.log 86400"

CustomLog "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/aaa-access-%Y%m%d.log 86400" combined

据我了解日志的格式有common和combind两种,暂时不知有啥区别,知道的大佬可以给我留言哦。

注意事项

当你配置好之后,重启服务器后,去访问网页之后才会生成CustomLog,但是是不会生成ErrorLog的,只有你访问出现错误(例如你访问一个此网站上不存在的资源时)才会生成错误日志,我还纠结了好久,醉了...

你可能感兴趣的:(Apache日志切割)