/src/main/scala/Loader.scala

https://github.com/tackley/apache-log-uploader · Scala · 36 lines · 26 code · 10 blank · 0 comment · 6 complexity · fda67bc4cc0aa4ab56e8fd1c5a5b6ecb MD5 · raw file

  1. import com.mongodb.casbah.commons.MongoDBObject
  2. import com.mongodb.casbah.MongoConnection
  3. import io.Source
  4. import com.mongodb.casbah.commons.Imports._
  5. object Loader extends App {
  6. com.mongodb.casbah.commons.conversions.scala.RegisterJodaTimeConversionHelpers()
  7. val coll = MongoConnection()("discussion-logs")("logs")
  8. if (args.isEmpty) {
  9. for {
  10. obj <- coll.find().sort(MongoDBObject("ms" -> -1)).limit(200)
  11. url <- Option(obj.get("url")).map(_.toString)
  12. ms <- Option(obj.get("ms")).map(_.toString.toInt)
  13. } {
  14. println("%-8d %s" format (ms, url))
  15. }
  16. } else {
  17. val srcFile = args(0)
  18. val host = args(1)
  19. println("Processing file %s with host %s..." format (srcFile, host))
  20. val src = Source.fromFile(srcFile, "UTF-8")
  21. for ((event, idx) <- ApacheLogParser.fromSource(src).zipWithIndex) {
  22. if (idx % 10000 == 0) println(idx)
  23. coll += (event.asDbObject ++ ("host" -> host))
  24. }
  25. }
  26. }