mirror of https://github.com/sbt/sbt.git
50 lines
1.7 KiB
Scala
50 lines
1.7 KiB
Scala
package sbt.test
|
|
|
|
object Reflected
|
|
{
|
|
type Logger =
|
|
{
|
|
def enableTrace(flag: Boolean): Unit
|
|
def traceEnabled: Boolean
|
|
def getLevel: Int
|
|
def setLevel(level: Int): Unit
|
|
|
|
def trace(t: F0[Throwable]): Unit
|
|
def success(message: F0[String]): Unit
|
|
def log(level: Int, message: F0[String]): Unit
|
|
def control(event: Int, message: F0[String]): Unit
|
|
}
|
|
type F0[T] =
|
|
{
|
|
def apply(): T
|
|
}
|
|
}
|
|
|
|
final class LocalLogger(logger: Logger) extends NotNull
|
|
{
|
|
import Reflected.F0
|
|
def enableTrace(flag: Boolean) = logger.enableTrace(flag)
|
|
def traceEnabled = logger.traceEnabled
|
|
def getLevel = logger.getLevel.id
|
|
def setLevel(level: Int) = logger.setLevel(Level(level))
|
|
|
|
def trace(t: F0[Throwable]) = logger.trace(t())
|
|
def success(message: F0[String]) = logger.success(message())
|
|
def log(level: Int, message: F0[String]) = logger.log(Level(level), message())
|
|
def control(event: Int, message: F0[String]) = logger.control(ControlEvent(event), message())
|
|
}
|
|
|
|
final class RemoteLogger(logger: Reflected.Logger) extends Logger
|
|
{
|
|
private final class F0[T](s: => T) extends NotNull { def apply(): T = s }
|
|
def getLevel: Level.Value = Level(logger.getLevel)
|
|
def setLevel(newLevel: Level.Value) = logger.setLevel(newLevel.id)
|
|
def enableTrace(flag: Boolean) = logger.enableTrace(flag)
|
|
def traceEnabled = logger.traceEnabled
|
|
|
|
def trace(t: => Throwable) = logger.trace(new F0(t))
|
|
def success(message: => String) = logger.success(new F0(message))
|
|
def log(level: Level.Value, message: => String) = logger.log(level.id, new F0(message))
|
|
def control(event: ControlEvent.Value, message: => String) = logger.control(event.id, new F0(message))
|
|
def logAll(events: Seq[LogEvent]) = events.foreach(log)
|
|
} |