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

时间:2017-04-05 14:10:02

标签: sql-server apache logging

我正在寻找减少apache日志文件 - 目前它有大约3米行(因为它包括图像和视频文件被加载的东西,基本上任何带有.jpg的URL)然而当做直接转储时进入sql server并进行各种查询以删除这些以及删除重复项我可以将其减少到100k行并从那里导出到sql server并链接到其他各种源。

我想要得到的是如下:

1.2.3.4 15/04/2016:10:20:30 [test_url] / testpage 200

1.2.3.4 15/04/2016:10:25:30 [test_url] / testproduct 200

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

%h%t \“%r \”%> s

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

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

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

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

此外,我想删除任何重复项(因此上面的第二行被删除,因为它是重复的,第三行已经消失,因为它是.jpg) - 有没有人知道什么代码可以使用这个(如果确实可行的话)。

如果所有数据都转储到SQL Server中但需要在源处修剪数据集以帮助保留服务器空间,那么很容易做到这一点。感谢。

1 个答案:

答案 0 :(得分:0)

由于您似乎在谈论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

等......有创意,阅读according Apache docs会有帮助:)