mirror of https://github.com/sbt/sbt.git
apply javac log level approach to directJavac
This commit is contained in:
parent
83aff9d3c2
commit
5c8d619880
|
|
@ -5,11 +5,13 @@ package sbt
|
||||||
|
|
||||||
/** Provides a `java.io.Writer` interface to a `Logger`. Content is line-buffered and logged at `level`.
|
/** 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.*/
|
* A line is delimited by `nl`, which is by default the platform line separator.*/
|
||||||
class LoggerWriter(delegate: Logger, level: Level.Value, nl: String) extends java.io.Writer
|
class LoggerWriter(delegate: Logger, unbufferedLevel: Option[Level.Value], nl: String = System.getProperty("line.separator")) extends java.io.Writer
|
||||||
{
|
{
|
||||||
def this(delegate: Logger, level: Level.Value) = this(delegate, level, System.getProperty("line.separator"))
|
def this(delegate: Logger, level: Level.Value) = this(delegate, Some(level))
|
||||||
|
def this(delegate: Logger) = this(delegate, None)
|
||||||
|
|
||||||
private[this] val buffer = new StringBuilder
|
private[this] val buffer = new StringBuilder
|
||||||
|
private[this] val lines = new collection.mutable.ListBuffer[String]
|
||||||
|
|
||||||
override def close() = flush()
|
override def close() = flush()
|
||||||
override def flush(): Unit =
|
override def flush(): Unit =
|
||||||
|
|
@ -20,6 +22,12 @@ class LoggerWriter(delegate: Logger, level: Level.Value, nl: String) extends jav
|
||||||
buffer.clear()
|
buffer.clear()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
def flushLines(level: Level.Value): Unit =
|
||||||
|
synchronized {
|
||||||
|
for(line <- lines)
|
||||||
|
delegate.log(level, line)
|
||||||
|
lines.clear()
|
||||||
|
}
|
||||||
override def write(content: Array[Char], offset: Int, length: Int): Unit =
|
override def write(content: Array[Char], offset: Int, length: Int): Unit =
|
||||||
synchronized {
|
synchronized {
|
||||||
buffer.appendAll(content, offset, length)
|
buffer.appendAll(content, offset, length)
|
||||||
|
|
@ -36,5 +44,8 @@ class LoggerWriter(delegate: Logger, level: Level.Value, nl: String) extends jav
|
||||||
process()
|
process()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private[this] def log(s: String): Unit = delegate.log(level, s)
|
private[this] def log(s: String): Unit = unbufferedLevel match {
|
||||||
|
case None => lines += s
|
||||||
|
case Some(level) => delegate.log(level, s)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue