从mysql中的apache日志计算大文件下载

我想统计一下客户端要求的大约10个不同文件的文件下载量。 我们为可以加载到MySQL数据库的apache日志生成了一个单独的日志格式。

对于这样一个特定的查询,我希望能够编写一个SQL语句来计算下载量,而不是安装一个过度膨胀的日志分析器。

这是用于MySQL日志的日志格式:

LogFormat "\"%a\",%{%Y%m%d%H%M%S}t,%>s,\"%b\",\"%{Content-Type}o\", \"%U\",\"%{Referer}i\",\"%{User-Agent}i\"" mysql 

这产生这种csv文件:

 "156.107.33.66",20121017113516,200,"10094440","application/x-msdos-program", "/flexnet/FLEXnetWinSetup.exe","http://www.example.com/downloads/flexnet","Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4" 

但更大的100MB +文件被分割成块,所以它不是一个简单的日志计数。

有没有人试过类似的东西?

如果通过拆分成chunck,则意味着客户端正在使用多个206 HTTP响应来加载文件,那么您应该尝试logging包含在响应中的头Content Range的内容:

 LogFormat "\"%a\",%{%Y%m%d%H%M%S}t,%>s,\"%b\",\"%{Content-Range}o\",\"%{Content-Type}o\", \"%U\",\"%{Referer}i\",\"%{User-Agent}i\"" mysql 

这应该会产生这样的东西(未经testing)

 "156.107.33.66",20121017113516,200,"10094440","bytes 0-999/3980","application/x-msdos-program", "/flexnet/FLEXnetWinSetup.exe","http://www.example.com/downloads/flexnet","Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4"