Skip to content
This repository was archived by the owner on Jun 10, 2020. It is now read-only.

Commit 226a543

Browse files
authored
Merge pull request #152 from retronym/topic/format
Performance optimizations around logging
2 parents 9f12566 + d9b130d commit 226a543

File tree

3 files changed

+16
-7
lines changed

3 files changed

+16
-7
lines changed

internal/util-logging/src/main/scala/sbt/internal/util/ConsoleAppender.scala

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -353,8 +353,10 @@ class ConsoleAppender private[ConsoleAppender] (
353353
* @param msg The message to format
354354
* @return The formatted message.
355355
*/
356-
private def formatted(format: String, msg: String): String =
357-
s"$reset${format}${msg}$reset"
356+
private def formatted(format: String, msg: String): String = {
357+
val builder = new java.lang.StringBuilder(reset.length * 2 + format.length + msg.length)
358+
builder.append(reset).append(format).append(msg).append(reset).toString
359+
}
358360

359361
/**
360362
* Select the right color for the label given `level`.
@@ -388,9 +390,14 @@ class ConsoleAppender private[ConsoleAppender] (
388390
): Unit =
389391
out.lockObject.synchronized {
390392
message.lines.foreach { line =>
391-
val labeledLine =
392-
s"$reset[${formatted(labelColor, label)}] ${formatted(messageColor, line)}"
393-
write(labeledLine)
393+
val builder = new java.lang.StringBuilder(
394+
labelColor.length + label.length + messageColor.length + line.length + reset.length * 3 + 3)
395+
def fmted(a: String, b: String) = builder.append(reset).append(a).append(b).append(reset)
396+
builder.append(reset).append('[')
397+
fmted(labelColor, label)
398+
builder.append("] ")
399+
fmted(messageColor, line)
400+
write(builder.toString)
394401
}
395402
}
396403

internal/util-logging/src/main/scala/sbt/internal/util/ConsoleOut.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ object ConsoleOut {
3737
lockObject.print(OverwriteLine)
3838
lockObject.println(s)
3939
last = Some(s)
40-
current = new java.lang.StringBuffer
40+
current.setLength(0)
4141
}
4242
}
4343

internal/util-logging/src/main/scala/sbt/internal/util/ManagedLogger.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,11 @@ class ManagedLogger(
2525
)
2626
}
2727

28+
private val SuccessEventTag = scala.reflect.runtime.universe.typeTag[SuccessEvent]
2829
// send special event for success since it's not a real log level
2930
override def success(message: => String): Unit = {
30-
infoEvent[SuccessEvent](SuccessEvent(message))
31+
infoEvent[SuccessEvent](SuccessEvent(message))(implicitly[JsonFormat[SuccessEvent]],
32+
SuccessEventTag)
3133
}
3234

3335
def registerStringCodec[A: ShowLines: TypeTag]: Unit = {

0 commit comments

Comments
 (0)