diff --git a/internal/util-logging/src/main/scala/sbt/internal/util/ConsoleAppender.scala b/internal/util-logging/src/main/scala/sbt/internal/util/ConsoleAppender.scala index 98f404d34..39d75cfce 100644 --- a/internal/util-logging/src/main/scala/sbt/internal/util/ConsoleAppender.scala +++ b/internal/util-logging/src/main/scala/sbt/internal/util/ConsoleAppender.scala @@ -263,8 +263,8 @@ class ConsoleAppender private[ConsoleAppender] ( } def objectEventToLines(oe: ObjectEvent[_]): Vector[String] = { - val tag = oe.tag - LogExchange.stringCodec[AnyRef](tag) match { + val contentType = oe.contentType + LogExchange.stringCodec[AnyRef](contentType) match { case Some(codec) => codec.showLines(oe.message.asInstanceOf[AnyRef]).toVector case _ => Vector(oe.message.toString) } diff --git a/internal/util-logging/src/main/scala/sbt/internal/util/ManagedLogger.scala b/internal/util-logging/src/main/scala/sbt/internal/util/ManagedLogger.scala index a7b84990a..24b9a8e02 100644 --- a/internal/util-logging/src/main/scala/sbt/internal/util/ManagedLogger.scala +++ b/internal/util-logging/src/main/scala/sbt/internal/util/ManagedLogger.scala @@ -42,7 +42,7 @@ class ManagedLogger( val tag = StringTypeTag[A] LogExchange.getOrElseUpdateJsonCodec(tag.key, implicitly[JsonFormat[A]]) // println("logEvent " + tag.key) - val entry: ObjectEvent[A] = new ObjectEvent(level, v, channelName, execId, tag.key) + val entry: ObjectEvent[A] = ObjectEvent(level, v, channelName, execId, tag.key) xlogger.log( ConsoleAppender.toXLevel(level), new ObjectMessage(entry) diff --git a/internal/util-logging/src/main/scala/sbt/internal/util/ObjectEvent.scala b/internal/util-logging/src/main/scala/sbt/internal/util/ObjectEvent.scala index 13cddfb83..fdf4d8789 100644 --- a/internal/util-logging/src/main/scala/sbt/internal/util/ObjectEvent.scala +++ b/internal/util-logging/src/main/scala/sbt/internal/util/ObjectEvent.scala @@ -4,12 +4,27 @@ package util import sbt.util.Level import sjsonnew.JsonFormat +import sjsonnew.support.scalajson.unsafe.Converter +import scala.json.ast.unsafe.JValue final class ObjectEvent[A]( val level: Level.Value, val message: A, val channelName: Option[String], val execId: Option[String], - val tag: String + val contentType: String, + val json: JValue ) extends Serializable { } + +object ObjectEvent { + def apply[A: JsonFormat]( + level: Level.Value, + message: A, + channelName: Option[String], + execId: Option[String], + contentType: String + ): ObjectEvent[A] = + new ObjectEvent(level, message, channelName, execId, contentType, + Converter.toJsonUnsafe(message)) +}