日志优化一般两个方面,日志切割和不记录指定类型日志,下面分别解释实验这两类


Apache日志切割

这里的日志指的是访问日志,每次访问都会产生数条日志,如果不去管理,时间久了,日志文件会越来越大,难以查看。所以我们将日志按照我们的需求进行归档,比如每天一个新日志。利用apache自带的一个工具rotatelogs即可实现。

下面我们来配置一下,在对应的虚拟主机配置文件中加入

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

ErrorLog " /usr/local/apache2/logs/test-error_log"

CustomLog "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/test-

access_%Y%m%d.log 86400" combined

说明:上面是两行,一定不要回车。Errorlog是错误日志,Customlog是访问日志。最前面的竖线即管道符,指把Customlog交给rtatelogs工具处理。-l的作用是校准时区为UTC,即北京时间。后面的86400,单位是秒,指一天。那么日志会每一天切割一次。最后的combined是日志格式,在httpd.conf有日志格式的定义。

# grep LogFormat /usr/local/apache2/conf/httpd.conf

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


Apache不记录指定文件类型日志

当一个站点的访问量很大时,访问日志会很多,但其实有一些访问日志并不需要记录,比如网站的一些图片,还有js、css等静态对象。

做下方的配置便可以实现上方的想法

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

ErrorLog "/usr/local/apache/logs/test-error_%Y%m%d.log 86400"

    SetEnvIf Request_URI ".*\.gif$" p_w_picpath-request

    SetEnvIf Request_URI ".*\.jpg$" p_w_picpath-request

    SetEnvIf Request_URI ".*\.png$" p_w_picpath-request

    SetEnvIf Request_URI ".*\.bmp$" p_w_picpath-request

    SetEnvIf Request_URI ".*\.swf$" p_w_picpath-request

    SetEnvIf Request_URI ".*\.js$" p_w_picpath-request

    SetEnvIf Request_URI ".*\.css$" p_w_picpath-request

    CustomLog "|/usr/local/apache/bin/rotatelogs -l /usr/local/apache/logs/test-access_%Y%m%d.log 86400" combined env=!p_w_picpath-request