对于大访问量的网站,日志不可能只记录在一个文件里面,1万日志大概就有50M,还有一个可能就是你要跟踪用户的行为,可能需要一些额外的信息,怎么把这些东西记录到apache日志里面。apache提供了很出色的日志配置方式,具体的配置可以参考:http://httpd.apache.org/docs/2.0/logs.html 我这里只是简单的举一些例子。
1。问题一:实现按照小时记录日志:
apache 自带有一个rotatelogs 可以实现这个功能,查看一下他的help就知道使用的方法了。
Usage: rotatelogs [-l] <logfile> {<rotation time in seconds>|<rotation size in megabytes>} [offset minutes from UTC]
先看下面的例子:
<VirtualHost *:80>
ServerAdmin webmaster@myhost.com
DocumentRoot /home/web/www
ServerName myhost.com
<Directory "/home/web/www">
Options Indexes FollowSymLinks
AllowOverride all
Order allow,deny
Allow from all
</Directory>
CustomLog "|bin/rotatelogs logs/myhost_access_log_%Y_%m_%d_%H.log 3600 480" common
</VirtualHost>
logs/pma_access_log_%Y_%m_%d_%H.log 是文件名字,可以用占位符。
3600 表示的是每个小时记录一次,这个单位是s
480 表示和UTC时间差的分钟数目,我们是东八区要比他们早480分钟。
2.问题2,我要记录一个用户的客户端的信息,并且每次用户访问,我都自动在浏览器里面写一个cookie,及时发现恶意攻击或者用于广告系统中防止作弊。
首先启用apache 自带的user track 把 LoadModule usertrack_module modules/mod_usertrack.so前面的#去掉。
linux用户的话,没有这个模块,那么就重新编译一下。
配置如下的虚拟主机:
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host2.domain
DocumentRoot D:/web/htdocs
ServerName localhost.com
CookieTracking on
CookieDomain .localhost.com
CookieExpires "1 days"
CookieStyle Cookie
<Directory "D:/web/htdocs">
Options Indexes FollowSymLinks
AllowOverride all
Order allow,deny
Allow from all
</Directory>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\" \"%{Cookie}i\"" mylogconfig
CustomLog "|bin/rotatelogs logs/pma_access_log_%Y_%m_%d_%H.log 3600 480" mylogconfig
</VirtualHost>
CookieTracking on
CookieDomain .localhost.com
CookieExpires "1 days"
CookieStyle Cookie
这四句是设置cookie的属性的。
这一句是设置日志的属性:
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\" \"%{Cookie}i\"" mylogconfig
日志的名字叫做mylogconfig。