Store JValue into ObjectEvent

This commit is contained in:
Eugene Yokota 2017-04-03 03:22:33 -04:00
parent e21c78ebb0
commit 1dab826ffd
3 changed files with 19 additions and 4 deletions

View File

@ -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)
}

View File

@ -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)

View File

@ -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))
}