Apacheのログから、各IPからのアクセス数を集計する

2013年5月23日

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]

Scala

Posted by GENDOSU