相关信息
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 警告级别为warn
LogFormat "%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 的中!是否定的意思,也就是不等于排除