Merge pull request #104 from eed3si9n/wip/logging

Filter out color in CosoleAppender only
This commit is contained in:
Dale Wijnand 2017-07-25 09:06:56 +01:00 committed by GitHub
commit 4b57f852b1
6 changed files with 23 additions and 26 deletions

View File

@ -116,7 +116,9 @@ class BufferedLogger(delegate: AbstractLogger) extends BasicLogger {
/** Plays buffered events and disables buffering. */
def stop(): Unit = synchronized { play(); clear() }
@deprecated("No longer used.", "1.0.0")
override def ansiCodesSupported = delegate.ansiCodesSupported
override def setLevel(newLevel: Level.Value): Unit = synchronized {
super.setLevel(newLevel)
if (recording)

View File

@ -1,6 +1,5 @@
package sbt.internal.util
import scala.compat.Platform.EOL
import sbt.util._
import java.io.{ PrintStream, PrintWriter }
import java.util.Locale
@ -269,11 +268,16 @@ class ConsoleAppender private[ConsoleAppender] (
useFormat: Boolean,
suppressedMessage: SuppressedTraceContext => Option[String]
) extends AbstractAppender(name, null, LogExchange.dummyLayout, true) {
import scala.Console.{ BLUE, GREEN, RED, RESET, YELLOW }
import scala.Console.{ BLUE, GREEN, RED, YELLOW }
private final val SUCCESS_LABEL_COLOR = GREEN
private final val SUCCESS_MESSAGE_COLOR = RESET
private final val NO_COLOR = RESET
private val reset: String = {
if (ansiCodesSupported && useFormat) scala.Console.RESET
else ""
}
private val SUCCESS_LABEL_COLOR = GREEN
private val SUCCESS_MESSAGE_COLOR = reset
private val NO_COLOR = reset
override def append(event: XLogEvent): Unit = {
val level = ConsoleAppender.toLevel(event.getLevel)
@ -333,7 +337,7 @@ class ConsoleAppender private[ConsoleAppender] (
* @return The formatted message.
*/
private def formatted(format: String, msg: String): String =
s"${RESET}${format}${msg}${RESET}"
s"$reset${format}${msg}$reset"
/**
* Select the right color for the label given `level`.
@ -362,14 +366,14 @@ class ConsoleAppender private[ConsoleAppender] (
private def appendLog(labelColor: String, label: String, messageColor: String, message: String): Unit =
out.lockObject.synchronized {
message.lines.foreach { line =>
val labeledLine = s"$RESET[${formatted(labelColor, label)}] ${formatted(messageColor, line)}"
val labeledLine = s"$reset[${formatted(labelColor, label)}] ${formatted(messageColor, line)}"
write(labeledLine)
}
}
private def write(msg: String): Unit = {
val cleanedMsg =
if (!useFormat) EscHelpers.removeEscapeSequences(msg)
if (!useFormat || !ansiCodesSupported) EscHelpers.removeEscapeSequences(msg)
else msg
out.println(cleanedMsg)
}

View File

@ -7,7 +7,9 @@ import sbt.util._
/** Promotes the simple Logger interface to the full AbstractLogger interface. */
class FullLogger(delegate: Logger) extends BasicLogger {
@deprecated("No longer used.", "1.0.0")
override val ansiCodesSupported: Boolean = delegate.ansiCodesSupported
def trace(t: => Throwable): Unit = {
if (traceEnabled)
delegate.trace(t)

View File

@ -54,5 +54,7 @@ class ManagedLogger(
new ObjectMessage(entry)
)
}
@deprecated("No longer used.", "1.0.0")
override def ansiCodesSupported = ConsoleAppender.formatEnabledInEnv
}

View File

@ -9,8 +9,8 @@ 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 {
@deprecated("No longer used.", "1.0.0")
override lazy val ansiCodesSupported = delegates exists supported
private[this] lazy val allSupportCodes = delegates forall supported
private[this] def supported = (_: AbstractLogger).ansiCodesSupported
override def setLevel(newLevel: Level.Value): Unit = {
@ -31,22 +31,8 @@ class MultiLogger(delegates: List[AbstractLogger]) extends BasicLogger {
def logAll(events: Seq[LogEvent]): Unit = delegates.foreach(_.logAll(events))
def control(event: ControlEvent.Value, message: => String): Unit = delegates.foreach(_.control(event, message))
private[this] def dispatch(event: LogEvent): Unit = {
val plainEvent = if (allSupportCodes) event else removeEscapes(event)
for (d <- delegates)
if (d.ansiCodesSupported)
d.log(event)
else
d.log(plainEvent)
}
private[this] def removeEscapes(event: LogEvent): LogEvent =
{
import EscHelpers.{ removeEscapeSequences => rm }
event match {
case s: Success => new Success(rm(s.msg))
case l: Log => new Log(l.level, rm(l.msg))
case ce: ControlEvent => new ControlEvent(ce.event, rm(ce.msg))
case _: Trace | _: SetLevel | _: SetTrace | _: SetSuccess => event
}
for (d <- delegates) {
d.log(event)
}
}
}

View File

@ -27,6 +27,7 @@ abstract class Logger extends xLogger {
// sys.process.ProcessLogger
final def out(message: => String): Unit = log(Level.Info, message)
@deprecated("No longer used.", "1.0.0")
def ansiCodesSupported: Boolean = false
def trace(t: => Throwable): Unit