From dc0fd2d48bb36bab030c437165e6618cf653a058 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Mon, 7 Sep 2015 01:31:17 -0400 Subject: [PATCH] move sbt.internal.util.Logger into sbt.util --- .../scala/sbt/internal/util/BasicLogger.scala | 12 +-- .../sbt/internal/util/BufferedLogger.scala | 1 + .../sbt/internal/util/ConsoleLogger.scala | 1 + .../scala/sbt/internal/util/ConsoleOut.scala | 1 + .../sbt/internal/util/FilterLogger.scala | 2 + .../scala/sbt/internal/util/FullLogger.scala | 2 + .../sbt/internal/util/GlobalLogging.scala | 1 + .../sbt/internal/util/LoggerWriter.scala | 2 + .../scala/sbt/internal/util/MainLogging.scala | 1 + .../scala/sbt/internal/util/MultiLogger.scala | 2 + .../main/scala/sbt/util/AbtractLogger.scala | 28 +++++++ .../scala/sbt/{internal => }/util/Level.scala | 4 +- .../sbt/{internal => }/util/LogEvent.scala | 2 +- .../sbt/{internal => }/util/Logger.scala | 80 +++++++------------ .../src/test/scala/LogWriterTest.scala | 1 + .../src/test/scala/TestLogger.scala | 2 + 16 files changed, 81 insertions(+), 61 deletions(-) create mode 100644 internal/util-logging/src/main/scala/sbt/util/AbtractLogger.scala rename internal/util-logging/src/main/scala/sbt/{internal => }/util/Level.scala (97%) rename internal/util-logging/src/main/scala/sbt/{internal => }/util/LogEvent.scala (95%) rename internal/util-logging/src/main/scala/sbt/{internal => }/util/Logger.scala (80%) diff --git a/internal/util-logging/src/main/scala/sbt/internal/util/BasicLogger.scala b/internal/util-logging/src/main/scala/sbt/internal/util/BasicLogger.scala index 9dd58e48e..1838822c5 100644 --- a/internal/util-logging/src/main/scala/sbt/internal/util/BasicLogger.scala +++ b/internal/util-logging/src/main/scala/sbt/internal/util/BasicLogger.scala @@ -3,15 +3,17 @@ */ package sbt.internal.util +import sbt.util._ + /** Implements the level-setting methods of Logger.*/ abstract class BasicLogger extends AbstractLogger { - private var traceEnabledVar = java.lang.Integer.MAX_VALUE + private var traceEnabledVar: Int = java.lang.Integer.MAX_VALUE private var level: Level.Value = Level.Info private var successEnabledVar = true - def successEnabled = synchronized { successEnabledVar } + def successEnabled: Boolean = synchronized { successEnabledVar } def setSuccessEnabled(flag: Boolean): Unit = synchronized { successEnabledVar = flag } - def getLevel = synchronized { level } + def getLevel: Level.Value = synchronized { level } def setLevel(newLevel: Level.Value): Unit = synchronized { level = newLevel } def setTrace(level: Int): Unit = synchronized { traceEnabledVar = level } - def getTrace = synchronized { traceEnabledVar } -} \ No newline at end of file + def getTrace: Int = synchronized { traceEnabledVar } +} diff --git a/internal/util-logging/src/main/scala/sbt/internal/util/BufferedLogger.scala b/internal/util-logging/src/main/scala/sbt/internal/util/BufferedLogger.scala index 4877de61f..d1f03cc72 100644 --- a/internal/util-logging/src/main/scala/sbt/internal/util/BufferedLogger.scala +++ b/internal/util-logging/src/main/scala/sbt/internal/util/BufferedLogger.scala @@ -3,6 +3,7 @@ */ package sbt.internal.util +import sbt.util._ import scala.collection.mutable.ListBuffer /** diff --git a/internal/util-logging/src/main/scala/sbt/internal/util/ConsoleLogger.scala b/internal/util-logging/src/main/scala/sbt/internal/util/ConsoleLogger.scala index 5be85eb24..5ca3fe9ee 100644 --- a/internal/util-logging/src/main/scala/sbt/internal/util/ConsoleLogger.scala +++ b/internal/util-logging/src/main/scala/sbt/internal/util/ConsoleLogger.scala @@ -3,6 +3,7 @@ */ package sbt.internal.util +import sbt.util._ import java.io.{ BufferedWriter, PrintStream, PrintWriter } import java.util.Locale diff --git a/internal/util-logging/src/main/scala/sbt/internal/util/ConsoleOut.scala b/internal/util-logging/src/main/scala/sbt/internal/util/ConsoleOut.scala index 30da238da..cffec8781 100644 --- a/internal/util-logging/src/main/scala/sbt/internal/util/ConsoleOut.scala +++ b/internal/util-logging/src/main/scala/sbt/internal/util/ConsoleOut.scala @@ -1,5 +1,6 @@ package sbt.internal.util +import sbt.util._ import java.io.{ BufferedWriter, PrintStream, PrintWriter } sealed trait ConsoleOut { diff --git a/internal/util-logging/src/main/scala/sbt/internal/util/FilterLogger.scala b/internal/util-logging/src/main/scala/sbt/internal/util/FilterLogger.scala index 4d5111c44..d52901c7b 100644 --- a/internal/util-logging/src/main/scala/sbt/internal/util/FilterLogger.scala +++ b/internal/util-logging/src/main/scala/sbt/internal/util/FilterLogger.scala @@ -3,6 +3,8 @@ */ package sbt.internal.util +import sbt.util._ + /** * A filter logger is used to delegate messages but not the logging level to another logger. This means * that messages are logged at the higher of the two levels set by this logger and its delegate. diff --git a/internal/util-logging/src/main/scala/sbt/internal/util/FullLogger.scala b/internal/util-logging/src/main/scala/sbt/internal/util/FullLogger.scala index 460012e10..1493e2d0f 100644 --- a/internal/util-logging/src/main/scala/sbt/internal/util/FullLogger.scala +++ b/internal/util-logging/src/main/scala/sbt/internal/util/FullLogger.scala @@ -3,6 +3,8 @@ */ package sbt.internal.util +import sbt.util._ + /** Promotes the simple Logger interface to the full AbstractLogger interface. */ class FullLogger(delegate: Logger) extends BasicLogger { override val ansiCodesSupported: Boolean = delegate.ansiCodesSupported diff --git a/internal/util-logging/src/main/scala/sbt/internal/util/GlobalLogging.scala b/internal/util-logging/src/main/scala/sbt/internal/util/GlobalLogging.scala index d58c72eae..191408393 100644 --- a/internal/util-logging/src/main/scala/sbt/internal/util/GlobalLogging.scala +++ b/internal/util-logging/src/main/scala/sbt/internal/util/GlobalLogging.scala @@ -3,6 +3,7 @@ */ package sbt.internal.util +import sbt.util._ import java.io.{ File, PrintWriter } /** diff --git a/internal/util-logging/src/main/scala/sbt/internal/util/LoggerWriter.scala b/internal/util-logging/src/main/scala/sbt/internal/util/LoggerWriter.scala index eea18b15b..7b440c200 100644 --- a/internal/util-logging/src/main/scala/sbt/internal/util/LoggerWriter.scala +++ b/internal/util-logging/src/main/scala/sbt/internal/util/LoggerWriter.scala @@ -3,6 +3,8 @@ */ package sbt.internal.util +import sbt.util._ + /** * Provides a `java.io.Writer` interface to a `Logger`. Content is line-buffered and logged at `level`. * A line is delimited by `nl`, which is by default the platform line separator. diff --git a/internal/util-logging/src/main/scala/sbt/internal/util/MainLogging.scala b/internal/util-logging/src/main/scala/sbt/internal/util/MainLogging.scala index 95402b4ff..aeab7e5cd 100644 --- a/internal/util-logging/src/main/scala/sbt/internal/util/MainLogging.scala +++ b/internal/util-logging/src/main/scala/sbt/internal/util/MainLogging.scala @@ -1,5 +1,6 @@ package sbt.internal.util +import sbt.util._ import java.io.PrintWriter object MainLogging { diff --git a/internal/util-logging/src/main/scala/sbt/internal/util/MultiLogger.scala b/internal/util-logging/src/main/scala/sbt/internal/util/MultiLogger.scala index cb5ff12d6..84168fd27 100644 --- a/internal/util-logging/src/main/scala/sbt/internal/util/MultiLogger.scala +++ b/internal/util-logging/src/main/scala/sbt/internal/util/MultiLogger.scala @@ -4,6 +4,8 @@ */ package sbt.internal.util +import sbt.util._ + // note that setting the logging level on this logger has no effect on its behavior, only // on the behavior of the delegates. class MultiLogger(delegates: List[AbstractLogger]) extends BasicLogger { diff --git a/internal/util-logging/src/main/scala/sbt/util/AbtractLogger.scala b/internal/util-logging/src/main/scala/sbt/util/AbtractLogger.scala new file mode 100644 index 000000000..51b7f08b5 --- /dev/null +++ b/internal/util-logging/src/main/scala/sbt/util/AbtractLogger.scala @@ -0,0 +1,28 @@ +package sbt.util + +abstract class AbstractLogger extends Logger { + def getLevel: Level.Value + def setLevel(newLevel: Level.Value): Unit + def setTrace(flag: Int): Unit + def getTrace: Int + final def traceEnabled: Boolean = getTrace >= 0 + def successEnabled: Boolean + def setSuccessEnabled(flag: Boolean): Unit + + def atLevel(level: Level.Value): Boolean = level.id >= getLevel.id + def control(event: ControlEvent.Value, message: => String): Unit + + def logAll(events: Seq[LogEvent]): Unit + /** Defined in terms of other methods in Logger and should not be called from them. */ + final def log(event: LogEvent): Unit = { + event match { + case s: Success => success(s.msg) + case l: Log => log(l.level, l.msg) + case t: Trace => trace(t.exception) + case setL: SetLevel => setLevel(setL.newLevel) + case setT: SetTrace => setTrace(setT.level) + case setS: SetSuccess => setSuccessEnabled(setS.enabled) + case c: ControlEvent => control(c.event, c.msg) + } + } +} diff --git a/internal/util-logging/src/main/scala/sbt/internal/util/Level.scala b/internal/util-logging/src/main/scala/sbt/util/Level.scala similarity index 97% rename from internal/util-logging/src/main/scala/sbt/internal/util/Level.scala rename to internal/util-logging/src/main/scala/sbt/util/Level.scala index a12e53fee..2f319cffd 100644 --- a/internal/util-logging/src/main/scala/sbt/internal/util/Level.scala +++ b/internal/util-logging/src/main/scala/sbt/util/Level.scala @@ -1,7 +1,7 @@ /* sbt -- Simple Build Tool * Copyright 2008, 2009 Mark Harrah */ -package sbt.internal.util +package sbt.util /** * An enumeration defining the levels available for logging. A level includes all of the levels @@ -25,4 +25,4 @@ object Level extends Enumeration { def apply(s: String) = values.find(s == _.toString) /** Same as apply, defined for use in pattern matching. */ private[sbt] def unapply(s: String) = apply(s) -} \ No newline at end of file +} diff --git a/internal/util-logging/src/main/scala/sbt/internal/util/LogEvent.scala b/internal/util-logging/src/main/scala/sbt/util/LogEvent.scala similarity index 95% rename from internal/util-logging/src/main/scala/sbt/internal/util/LogEvent.scala rename to internal/util-logging/src/main/scala/sbt/util/LogEvent.scala index 70a4d5031..b6225896f 100644 --- a/internal/util-logging/src/main/scala/sbt/internal/util/LogEvent.scala +++ b/internal/util-logging/src/main/scala/sbt/util/LogEvent.scala @@ -1,7 +1,7 @@ /* sbt -- Simple Build Tool * Copyright 2008, 2009 Mark Harrah */ -package sbt.internal.util +package sbt.util sealed trait LogEvent extends NotNull final class Success(val msg: String) extends LogEvent diff --git a/internal/util-logging/src/main/scala/sbt/internal/util/Logger.scala b/internal/util-logging/src/main/scala/sbt/util/Logger.scala similarity index 80% rename from internal/util-logging/src/main/scala/sbt/internal/util/Logger.scala rename to internal/util-logging/src/main/scala/sbt/util/Logger.scala index bcd0963c2..17e19f902 100644 --- a/internal/util-logging/src/main/scala/sbt/internal/util/Logger.scala +++ b/internal/util-logging/src/main/scala/sbt/util/Logger.scala @@ -1,39 +1,42 @@ /* sbt -- Simple Build Tool * Copyright 2008, 2009, 2010 Mark Harrah */ -package sbt.internal.util +package sbt.util import xsbti.{ Logger => xLogger, F0 } import xsbti.{ Maybe, Position, Problem, Severity } import sys.process.ProcessLogger +import sbt.internal.util.{ BufferedLogger, FullLogger } import java.io.File -abstract class AbstractLogger extends Logger { - def getLevel: Level.Value - def setLevel(newLevel: Level.Value): Unit - def setTrace(flag: Int): Unit - def getTrace: Int - final def traceEnabled: Boolean = getTrace >= 0 - def successEnabled: Boolean - def setSuccessEnabled(flag: Boolean): Unit +/** + * This is intended to be the simplest logging interface for use by code that wants to log. + * It does not include configuring the logger. + */ +abstract class Logger extends xLogger { + final def verbose(message: => String): Unit = debug(message) + final def debug(message: => String): Unit = log(Level.Debug, message) + final def info(message: => String): Unit = log(Level.Info, message) + final def warn(message: => String): Unit = log(Level.Warn, message) + final def error(message: => String): Unit = log(Level.Error, message) + // Added by sys.process.ProcessLogger + final def err(message: => String): Unit = log(Level.Error, message) + // sys.process.ProcessLogger + final def out(message: => String): Unit = log(Level.Info, message) - def atLevel(level: Level.Value): Boolean = level.id >= getLevel.id - def control(event: ControlEvent.Value, message: => String): Unit + def ansiCodesSupported: Boolean = false - def logAll(events: Seq[LogEvent]): Unit - /** Defined in terms of other methods in Logger and should not be called from them. */ - final def log(event: LogEvent): Unit = { - event match { - case s: Success => success(s.msg) - case l: Log => log(l.level, l.msg) - case t: Trace => trace(t.exception) - case setL: SetLevel => setLevel(setL.newLevel) - case setT: SetTrace => setTrace(setT.level) - case setS: SetSuccess => setSuccessEnabled(setS.enabled) - case c: ControlEvent => control(c.event, c.msg) - } - } + def trace(t: => Throwable): Unit + def success(message: => String): Unit + def log(level: Level.Value, message: => String): Unit + + def debug(msg: F0[String]): Unit = log(Level.Debug, msg) + def warn(msg: F0[String]): Unit = log(Level.Warn, msg) + def info(msg: F0[String]): Unit = log(Level.Info, msg) + def error(msg: F0[String]): Unit = log(Level.Error, msg) + def trace(msg: F0[Throwable]): Unit = trace(msg.apply) + def log(level: Level.Value, msg: F0[String]): Unit = log(level, msg.apply) } object Logger { @@ -107,32 +110,3 @@ object Logger { override def toString = s"[$severity] $pos: $message" } } - -/** - * This is intended to be the simplest logging interface for use by code that wants to log. - * It does not include configuring the logger. - */ -trait Logger extends xLogger { - final def verbose(message: => String): Unit = debug(message) - final def debug(message: => String): Unit = log(Level.Debug, message) - final def info(message: => String): Unit = log(Level.Info, message) - final def warn(message: => String): Unit = log(Level.Warn, message) - final def error(message: => String): Unit = log(Level.Error, message) - // Added by sys.process.ProcessLogger - final def err(message: => String): Unit = log(Level.Error, message) - // sys.process.ProcessLogger - final def out(message: => String): Unit = log(Level.Info, message) - - def ansiCodesSupported: Boolean = false - - def trace(t: => Throwable): Unit - def success(message: => String): Unit - def log(level: Level.Value, message: => String): Unit - - def debug(msg: F0[String]): Unit = log(Level.Debug, msg) - def warn(msg: F0[String]): Unit = log(Level.Warn, msg) - def info(msg: F0[String]): Unit = log(Level.Info, msg) - def error(msg: F0[String]): Unit = log(Level.Error, msg) - def trace(msg: F0[Throwable]): Unit = trace(msg.apply) - def log(level: Level.Value, msg: F0[String]): Unit = log(level, msg.apply) -} diff --git a/internal/util-logging/src/test/scala/LogWriterTest.scala b/internal/util-logging/src/test/scala/LogWriterTest.scala index 156f45455..1f33a3761 100644 --- a/internal/util-logging/src/test/scala/LogWriterTest.scala +++ b/internal/util-logging/src/test/scala/LogWriterTest.scala @@ -3,6 +3,7 @@ package sbt.internal.util +import sbt.util._ import org.scalacheck._ import Arbitrary.{ arbitrary => arb, _ } import Gen.{ listOfN, oneOf } diff --git a/internal/util-logging/src/test/scala/TestLogger.scala b/internal/util-logging/src/test/scala/TestLogger.scala index 74dcbb448..b9ddda148 100644 --- a/internal/util-logging/src/test/scala/TestLogger.scala +++ b/internal/util-logging/src/test/scala/TestLogger.scala @@ -1,5 +1,7 @@ package sbt.internal.util +import sbt.util._ + object TestLogger { def apply[T](f: Logger => T): T = {