(如果合适,请转到 serverfault - 对我来说这似乎更多的是应用程序问题)
我有一个 PHP 服务器,用于托管播客的 MP3 文件。我希望获得每周文件下载次数的详细数据(长尾现象是现实吗?)。AWStats 似乎无法满足我的需求。
理想情况下,我会得到一个 Excel 文件,每行一个文件,然后每周(或每天)有一列,下载数字汇总到每个文件/每周的单个单元格中。是否有任何解决方案(基于 PHP 或我加载日志的 Windows 应用程序)可以生成这种格式的报告?
答案1
答案2
@phsr 的建议是通过页面提供服务,这是最好的。但是如果你不想这样做,一个简单的 bash 脚本应该能够从日志文件中获取你想要的内容。
我不太擅长 bash 等,但是如果文件位于同一个目录中,那么类似这样的代码(伪代码)应该可以起作用:
for each $file in $mp3dir
echo $file + ',' + `cat apache.log | grep $file | wc -l` >>myreport.csv
当然,grep 过滤器可能包含更具体的内容,以隔离日志中可能存在的不相关的行。
此外,apache.log 实际上是累积的猫在一段指定时间内的指定日志文件(假设您有适当的logrotate来每天轮换日志)。
另一种方法是使用grep从日志中获取所有“.mp3”行,并使用sed将每个条目组成一个 csv 行,这样文件名和日期就在同一行。然后将其输入数据库,并从那里进行查询。
如果有人能把它放到“真正的” bash 中,请这样做:)
答案3
您将需要解析 Web 服务器日志文件。日志格式取决于 Web 服务器以及日志配置方式。大多数语言都有模块,使解析日志变得相对简单。没有必要在 bash 或 awk 中从头编写内容。
如果您不想编写任何代码,我建议您查看 splunk。有一个免费版本,允许您每天解析最多 500MB 的日志数据,这是大量的日志数据,因此您应该对免费/社区版本感到满意。
Splunk 还可以为您导出结果。