Apacheのログから、各IPからのアクセス数を集計する
Apacheのログから、各IPからのアクセス数を集計して、多い順にソートして表示するスクリプト
[scala]val apacheLog = new File("access.log")
/*
* IPアドレスのカウント
*/
StringFileInput(apacheLog) { reader =>
var count = 0
// ランダム文字生成器
val it3 = new Iterator[Array[String]] {
def hasNext = reader.ready
def next(): Array[String] = { reader.readLine.split(" ") }
}
val logAnalize = (Map[String, Int]() /: it3 ){(result, item) => result + (item.first -> (result.getOrElse(item.first, 0) + 1))}
logAnalize.toList.sort((a, b) => a._2 < b._2).foreach{case (key, value) =>
println(key, value)
}
// 61.126.188.190
// (List[Array[String]]() /: it3){(result, item) => item :: result}.filter(a => {a.first == "61.126.188.190"}).map(a => println(a.mkString(" ")))
}[/scala]