在apache配置文件或者虚拟主机配置文件中面添加

LogFormat INSERT INTO apacheLog (ID, dateTime, IP, URL, code, referer, userAgent, size, request) VALUES ( NULL , "%{%Y-%m-%d %H:%M:%S}t", "%a", "%U", "%>s", " %{Referer}i", "%{User-Agent}i", %b, %T);" sqlcomm
CustomLog "| /usr/local/Mysql --host=HOST --user=USER --password=PASSWORD --database=LITRIN_NET" sqlcomm

建立数据库apacheLog。


  1. CREATE TABLE ` apacheLog ` (  
  2.   `ID` int(11) NOT NULL auto_increment,  
  3.   `dateTime` datetime NOT NULL,  
  4.   `IP` varchar(15) NOT NULL,  
  5.   `URL` varchar(256) NOT NULL,  
  6.   `code` varchar(3) NOT NULL,  
  7.   `referer` varchar(256) NOT NULL,  
  8.   `userAgent` varchar(256) NOT NULL,  
  9.   `sizeint(11) NOT NULL,  
  10.   `request` float NOT NULL,  
  11.   PRIMARY KEY  (`ID`),  
  12.   KEY `dateTime` (`dateTime`)  
  13. ) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;  
  14. SET character_set_client = @saved_cs_client;  

 确认无误后重启apache生效!

其实整个流程很简单:先是利用LogFormat设置将日志转换为接近sql的格式,再通过CustomLog 调用pipe实现mysql写入。你也可以参照http://httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats的格式设置写入自己关心的数据。
此外,你也可以使用SetEnvIf配合正则表达式过滤掉诸如图片、CSS、JS之类相对不重要的信息。