Sql server apache日志文件-获取修剪和筛选的数据

Sql server apache日志文件-获取修剪和筛选的数据,sql-server,apache,logging,Sql Server,Apache,Logging,我希望精简一个apache日志文件——目前它大约有300万行(因为它包括正在加载的图像和视频文件,基本上是任何带有.jpg的url)但是,当直接转储到sql server并在那里进行各种查询以删除这些内容以及删除重复内容时,我可以将这些内容减少到10万行,然后从那里导出到sql server并链接到各种其他源 我希望得到的是以下信息: 1.2.3.4 2016年4月15日:10:20:30[测试url]/testpage 200 1.2.3.4 2016年4月15日:10:25:30[测试url

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

我希望得到的是以下信息:

1.2.3.4 2016年4月15日:10:20:30[测试url]/testpage 200

1.2.3.4 2016年4月15日:10:25:30[测试url]/测试产品200

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

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

1.2.3.4[2016年4月15日:10:20:30+0000]获取[test_url]/testpage HTTP/1.1200

1.2.3.4[2016年4月15日:10:20:30+0000]获取[test_url]/testpage HTTP/1.1200

1.2.3.4[2016年4月15日:10:20:30+0000]获取[test_url]/testimage.jpg HTTP/1.1200

1.2.3.4[2016年4月15日:10:25:30+0000]获取[test_url]/testproduct HTTP/1.1200

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


如果所有数据都转储到SQL server中,但需要在源位置修剪数据集以帮助保留服务器空间,那么这样做非常容易。谢谢。

既然您似乎在谈论Apache的访问日志,那么您必须在某个时候为访问日志设置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

等等…有创意,myb阅读将有帮助:)

谢谢,还有一件事,在这个过程中是否可以删除uri字符串的一部分-例如,[testurl]/testpage/testpage.html?promocode=test to[testurl]/testpageNot,如果您使用
%U
记录uri或几乎任何其他标准变量。但您始终可以定义一个环境变量并记录它,以创建您自己的唯一日志格式;)在这种情况下,您也可以基于URI
setenif
,但要将变量设置为特定值,例如URI/查询字符串的剥离版本。我建议阅读以下内容:以及上面的
setenif
链接,了解如何实现这一点。