樂思蜀的博客,包括但不限于SEO&SEM研究、应用中的心得体会,互联网、搜索引擎观察与思考。

导入Web日志到MySQL数据库

2008年12月06日 by 樂思蜀

访问分析是SEO的一项重要工作,但统计、分析工具毕竟功能是针对大众的,很多时候SEO需要一些特定的数据,是统计分析软件、程序所不能提供的。这样,直接的Web日志分析就是最合适的了,日志中会记录每一个访问情况,只要按自己的意愿提取、组合,就能得到想要的数据。

就这个问题与星箭聊了挺长时间,最后一致认为将日志导入到SQL数据库(MySQL & SQL Server)中,使用SQL语句分析是最方便的,需要什么样的数据,只要使用相应的SQL命令就能实现。

我的服务器是Linux的,没有 SQL Server,之前就没再继续这件事。今天聊到这个话题时认真的搜索了一下,找到了使用MySQL分析日志的第一步,记录在此。

下一步的分析方法我有心得后会发布在博客中,有兴趣的朋友可以留意;同时,征集精通于SQL语句的朋友,一起讨论分析的各种方法,并分享给其他朋友。

导入Web日志到MySQL数据库的实现

1、修改Apache日志格式

修改Web日志格式为:

Logformat combined %>a,%ui,%un,[%tl],"%rm %ru HTTP/%rv",%Hs,%h","%{User-Agent}>h",%Ss:%Sh

明白的朋友应该一看就知道了,SQL需要导入的内容有特定的分隔符,Apache的日志默认是以空格分隔的,而有些内容(如状态码中的 200 610)也包含空格,这就无法准确的导入。

将日志格式修改为以逗号分隔,就能准确的导入了。还可以根据自己的需要,取消日志格式中不需要的内容,减少日志文件大小。

2、建立MySQL数据表

drop table if exists weblog;
create table weblog (
id int unsigned auto_increment PRIMARY KEY not null,
l_date date,
l_time time,
c_ip varchar(15),
s_ip varchar(15),
s_port varchar(5),
method varchar(10),
path varchar(255),
query varchar(255),
status varchar(3),
domain varchar(50),
system varchar(200)
);

注:上面只是一个MySQL数据表结构范例,没有与上一步日志格式对应,请勿直接复制使用!

新建一个数据库,数据表结构与日志格式对应起来。

3、导入日志到MySQL中

LOAD DATA INFILE  '/日志位置/日志文件'  INTO TABLE weblog FIELDS TERMINATED BY ',';

weblog 对应上面的数据表名。

第二步就是分析了,如上所说,有心得后再分享。

另外,从网上找到一个将IIS日志导入到MySQL数据库的.pl程序,原理相通的,需要的点这里下载(Readme.txt为使用说明)。

Linux下cronolog安装配置

2008年04月06日 by 樂思蜀

Linux下运行的Web服务器Apache,默认日志文件是不分割的,一个整文件既不易于管理,也不易于分析统计。安装cronolog后,可以将日志文件按时间分割,易于管理和分析。

cronolog安装配置非常简单,下载后只需要输入几个命令即可完成。

1、下载(最新版本

#  wget http://cronolog.org/download/cronolog-1.6.2.tar.gz

2、解压缩

# tar zxvf cronolog-1.6.2.tar.gz

3、进入cronolog安装文件所在目录

# cd cronolog-1.6.2

4、运行安装

# ./configure
# make
# make install

5、查看cronolog安装后所在目录(验证安装是否成功)

# which cronolog

一般情况下显示为:/usr/local/sbin/cronolog

整个安装过程结束,下面需要把日志的格式配置一下:

1、虚拟主机配置文件 httpd-vhosts.conf

将Web日志设置 CustomLog 修改为以下格式

CustomLog "|/usr/local/sbin/cronolog /www/logs/example_%Y%m%d.log" combined

当然,错误日志设置 ErrorLog 也可以利用 cronolog 分割,设置为

ErrorLog "|/usr/local/sbin/cronolog /www/logs/error_%Y%m%d.log"

2、如果服务器上只有一个站点(当然这种情况比较少),直接按上面所说格式修改 httpd.conf 文件日志设置部分。

说明:

  • 绿色部分 为 cronolog 安装后所在位置,系统版本不同可能位置不完全一样,以 which 命令查看到的位置为准;
  • 蓝色部分 为设置的日志文件所在位置,根据需要修改;
  • 红色部分 为设置的日志文件标识性字符,根据需要修改;
  • %Y%m%d 为日志文件分割方式,例子中为“年月日”,也可以修改成自己需要的。

Apache 日志设置不记录指定文件类型的方法

2008年02月19日 by 樂思蜀

Apache日志精准的记录了Web访问的记录,但对于访问量很大的站来说,日志文件过大对于分析和保存很不方便。可以在http.conf(或虚拟主机设置文件httpd-vhosts.conf)中进行设置,限制日志不记录指定文件类型,减少日志文件空间占用。

FilesMatch “\.(ico|gif|jpg|swf)”
SetEnv IMAG 1
/FilesMatch
CustomLog logs/access_log combined env=!IMAG

第一行中:蓝色部分为指定文件类型,设置后将不记录这些文件的访问;

第四行中:绿色部分为日志路径,根据实际情况设置;蓝色部分为apache日志4种记录方式(common、combined、referer、agent)之一,根据实际需要选择;env=!IMAG一定要加在最后,指令不记录上面设定的文件类型。

注:红色的括号为全角,使用时转换成半角。