专栏名称: About云
about云-为热爱云开发技术人员提供最全面的信息传播和服务平台
51好读  ›  专栏  ›  About云

日志分析实战之清洗日志小实例5:实现获取不能访问url

About云  · 公众号  ·  · 2017-10-20 09:16

正文

问题导读

1.在url中,如何过滤不需要的内容?
2.如何获取404记录并且获取字段?
3.获取不能访问url列表的思路是什么?



about云日志分析实战之清洗日志4:统计网站相关信息
http://www.aboutyun.com/forum.php?mod=viewthread&tid=22900


上篇文章简单的统计了一些信息,下一步希望找到404对应的url。
思路:
1.获取request字段
2.过滤不需要字符
3.实现获取url,并打印输出


1.创建getRequest函数获取request字段

[Scala] 纯文本查看 复制代码

?

1
2
3
4
5
6
7
8
// get the `request` field from an access log record
def getRequest(rawAccessLogString : String) : Option[String] = {
val accessLogRecordOption = p.parseRecord(rawAccessLogString)
accessLogRecordOption match {
case Some(rec) = > Some(rec.request)
case None = > None
}
}


2.创建extractUriFromRequest函数

[Scala] 纯文本查看 复制代码

?

1
2
// val request = "GET /foo HTTP/1.0"
def extractUriFromRequest(requestField : String) = requestField.split( " " )( 1 )


这个目的大家可以猜猜它的作用

获取404页面,并且打印出请求的URL.

[Scala] 纯文本查看 复制代码

?

1
2
3
4
5
val distinctRecs = log.filter(line = > getStatusCode(p.parseRecord(line)) == "404" )
.map(getRequest( _ ))
.collect { case Some(requestField) = > requestField }
.map(extractUriFromRequest( _ ))
.distinct



[Scala] 纯文本查看 复制代码

?

1






请到「今天看啥」查看全文