1.apache日志有访问日志和错误日志,错误日志根据日志级别来输出错误信息,而访问日志根据定义的日志格式来记录访问动作

2.访问日志格式在httpd.conf文件里面定义,在虚拟主机里面引用

3.如果网站访问量大,那么很容易造成访问日志过大,所以对访问日志进行自动切割非常有必要

4.本篇日志使用的日志分割工具是apache自己的rotatelogs工具

 

思路:在httd.conf中选择合适自己的日志格式>在虚拟主机的配置文件里引用并分割

 

第一:选择合适的日志格式

①打开httpd.conf文件

vim /usr/local/apache/conf/httpd.conf

  ②找到标签,内容如下(后面的文字是解释内容):

ErrorLog "logs/error_log" 错误日志
LogLevel warn 警告级别为warnLogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined 复合日志格式
LogFormat "%h %l %u %t \"%r\" %>s %b" common 常规日志格式LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio 复合日志格式CustomLog "logs/access_log" common 默认访问日志存放路径和格式,如果虚拟主机中不定义的话就是用这个

 我们使用的是如下这个日志格式,因为这个格式记录的东西比较丰富

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined 复合日志格式

 

 第二:在虚拟主机中配置日志格式并切割

 ①:打开虚拟主机配置文件

vim /usr/local/apache/conf/extra/httpd_vhosts.conf

②:注释掉原来的内容

#CustomLog "logs/dummy-host.example.com-access_log" common

③:插入如下代码

 CustomLog "|/usr/local/apache/bin/rotatelogs -l logs/discuz.expeak.com-access_%Y%m%d.log 86400" combined env=!paichu

 |/usr/local/apache/bin/rotatelogs 指定使用rotatelogs工具 ,-l 参数是指定访问日志存放路径, %Y%m%d 是日志以年月日来命名, 86400 是秒,换算过来也就是一天,也就是说一天切割一次日志。 combined 是日志格式,也就是说使用combined这个日志格式来记录日志。

扩展内容:排除图片和css、js等内容的日志记录

说明:默认的日志会记录所有访问内容,包括各种图片、css、js等,那如何过滤掉这些内容的,请看下面:

①在虚拟主机标签中设置要排除的内容(后面的文字是解释)

SetEnvIf Request_URI "\.(gif|jpg|png|css|js)$" paichu   匹配所有请求中包含.gif.jpg.png.css.js的内容,起名字为paichu

 ②在日志设置语句中添加排除

CustomLog "|/usr/local/apache/bin/rotatelogs -l logs/discuz.expeak.com-access_%Y%m%d.log 86400" combined env=!paichu

   env=!paichu 的中!是否定的意思,也就是不等于排除