Apache 日志文件 - 修剪和过滤数据



我希望修剪一个 apache 日志文件 - 目前它目前有大约 3m 行(因为它包括正在加载的图像和视频文件等内容,基本上任何带有 .jpg 的 url)但是当直接转储到 sql Server 并在那里进行各种查询以删除这些以及删除重复项时,我可以将其减少到 100k 行,然后从那里导出到 sql Server 并链接到各种其他来源。

我正在尝试得到的是以下几点:

1.2.3.4 2016-04-15:10:20:30 [test_url]/测试页 200

1.2.3.4 15/04/2016:10:25:30 [test_url]/测试产品 200

从日志文件中的以下内容:

%h %t \"%r\" %>s

1.2.3.4 [15/Apr/2016:10:20:30 +0000] 获取 [test_url]/testpage HTTP/1.1 200

1.2.3.4 [15/Apr/2016:10:20:30 +0000] 获取 [test_url]/testpage HTTP/1.1 200

1.2.3.4 [15/Apr/2016:10:20:30 +0000] 获取 [test_url]/testimage.jpg HTTP/1.1 200

1.2.3.4 [15/Apr/2016:10:25:30 +0000] 获取 [test_url]/testproduct HTTP/1.1 200

我还想删除任何重复项(因此删除了上面的第二行,因为它是重复的,而第三行消失了,因为它是.jpg) - 有没有人知道什么代码可以处理这个(如果确实可行)。

如果所有数据都转储到 SQL 服务器中,但需要在源中修剪数据集以帮助节省服务器空间,则很容易做到这一点。谢谢。

由于您似乎在谈论 Apache 的access_log因此您必须在某个时候为 access_log 设置 CustomLog 指令。只需在行尾添加env=!dontlog,例如:

CustomLog /var/log/apache2/access_log combined env=!dontlog

然后定义任意数量的规则以排除特定请求:

SetEnvIf Remote_Addr 10.11.12.13 dontlog
SetEnvIf Request_URI "^/images/.*" dontlog
SetEnvIf Request_URI ".(mpeg|mp4|jpe?g|png|gif)" dontlog
SetEnvIf User-Agent Robot dontlog

等。。。要有创意,阅读根据Apache文档将有助于:)

最新更新