天宇的JAVA空间站


Apache服务器的日志(LOG)定制

08-03-01 00:41Update

LifevV.COM编辑部

我们在很多情况下需要定制Apache服务器(HTTPD)的日志(LOG)。比如为了防止Apache LOG文件过大需要定制apache服务器的LOG文件名,
对于某些特定的URL比如图片等的访问不记录LOG等。

本文就此2例介绍apache的定制方法。

1,apache服务器LOG文件名的定制(按时间自动命名)


apache自带了名为一个rotatelogs的组件,可以通过配置达到LOG文件定制的目的。
打开httpd.conf文件:
例:
TransferLog "|/usr/local/apache2/bin/rotatelogs /usr/local/apache2/logs/access_log 86400"
TransferLog "|/usr/local/apache2/bin/rotatelogs /usr/local/apache2/logs/error_log 86400"


参数1:rotatelogs的路径/文件名。以 | 接头。
参数2:LOG文件的路径/文件名
参数3:LOG文件创建的滚动时间(単位:秒)。上面86400为每24小时重新写入新的LOG文件。

2,apache服务器不记录图片文件的访问LOG


很多情况,我们没必要让apache服务器记录图片/Javascript/CSS等文件的访问LOG,同样可以通过设置httpd.conf来达到目的。
打开httpd.conf文件:
例(Addmodule的以下任意位置):
LoadModule setenvif_module modules/mod_setenvif.so
AddModule mod_setenvif.c

SetEnvIf Request_URI "\.(gif)|(jpg)|(jpeg)|(js)|(css)|(png)$" no_access_log


将默认设置
CustomLog /var/log/httpd/access_log combined

修改为:
CustomLog /usr/local/apache2/logs/access_log combined env=!no_access_log


重新启动apache
#httpd restart

如此,Apache便会按时自动在新的LOG文件记录日志,也不会记录对图片/Javascript/css文件的访问日志。

apache2 设置


apache2的情况下,如果只有rotatelogs2,可以做类似如下设置:
LoadModule setenvif_module modules/mod_setenvif.so

SetEnvIf Request_Method "(GET)|(POST)|(PUT)|(DELETE)|(HEAD)" log
SetEnvIf Request_URI "(\.gif|\.jpe?g|\.png|\.css|\.js|\.ico|/image_thumb)$" !log


NameVirtualHost *

<VirtualHost *>
ServerName www.your-domain.com
ServerAlias your-domain.com *.your-domain.com
CustomLog "|/usr/sbin/rotatelogs2 /var/log/apache2/your-domain-access_log.%Y%m%d 86400 +540" combined env=log

</VirtualHost>
 
Copyright ©2006-2010 lifevv.com. All Rights Reserved
POWERED BY @pmplat.syboos.com