将Apache日志实时写入mysql-sky
在apache配置文件或者虚拟主机配置文件中面添加LogFormat INSERT INTO apacheLog (ID, dateTime, IP, URL, code, referer, userAgent,>
CustomLog "| /usr/local/Mysql --host=HOST --user=USER --password=PASSWORD --database=LITRIN_NET" sqlcomm
建立数据库apacheLog。
[*]CREATE TABLE ` apacheLog ` (
[*]`ID` int(11) NOT NULL auto_increment,
[*]`dateTime` datetime NOT NULL,
[*]`IP` varchar(15) NOT NULL,
[*]`URL` varchar(256) NOT NULL,
[*]`code` varchar(3) NOT NULL,
[*]`referer` varchar(256) NOT NULL,
[*]`userAgent` varchar(256) NOT NULL,
[*]`size` int(11) NOT NULL,
[*]`request` float NOT NULL,
[*]PRIMARY KEY(`ID`),
[*]KEY `dateTime` (`dateTime`)
[*]) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;
[*]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之类相对不重要的信息。
页:
[1]