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的,只有你访问出现错误(例如你访问一个此网站上不存在的资源时)才会生成错误日志,我还纠结了好久,醉了...