All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.scalameter.Log.scala Maven / Gradle / Ivy

The newest version!
package org.scalameter


trait Log {
  def error(msg: String): Unit
  def warn(msg: String): Unit
  def info(msg: String): Unit
  def debug(msg: String): Unit
  def trace(t: Throwable): Unit

  def verbose(msg: =>Any) = debug(msg.toString)
  def apply(msg: =>Any) = info(msg.toString)
}

object Log {

  case object None extends Log {
    def error(msg: String) {}
    def warn(msg: String) {}
    def info(msg: String) {}
    def debug(msg: String) {}
    def trace(t: Throwable) {}
  }

  case object Console extends Log {
    def error(msg: String) = info(msg)
    def warn(msg: String) = info(msg)
    def trace(t: Throwable) = info(t.getMessage)
    def info(msg: String) = log synchronized {
      println(msg)
    }
    def debug(msg: String) {
      if (currentContext(Key.verbose)) log synchronized {
        println(msg)
      }
    }
  }

  case class Composite(logs: Log*) extends Log {
    def error(msg: String) = for (l <- logs) l.error(msg)
    def warn(msg: String) = for (l <- logs) l.warn(msg)
    def trace(t: Throwable) = for (l <- logs) l.trace(t)
    def info(msg: String) = for (l <- logs) l.info(msg)
    def debug(msg: String) = for (l <- logs) l.debug(msg)
  }

}





© 2015 - 2025 Weber Informatics LLC | Privacy Policy