如何防止 Akka LoggingAdapter 截断 ByteString 日志消息?
How to prevent Akka LoggingAdapter from truncating ByteString log messages?
我是 Scala 和 Akka 的新手。我正在使用 LoggingAdapter 来记录 ByteString 消息。我看到一个常见的场景,其中相当大的消息被截断。例如,
我需要查看整个消息。请帮帮我。
这是因为akka.util.ByteString.toString
方法中的逻辑:
override def toString(): String = {
val maxSize = 100
if (size > maxSize)
take(maxSize).toString + s"... and [${size - maxSize}] more"
else
super.toString
}
您可以将 ByteString
转换为 List
,这将打印所有内容。
val myBs: ByteString = ??? //some very long ByteString
println(myBs) //this will get truncated
println(myBs.toList) //but this will not
我们可以将 ByteString 转换为数组,然后以 space 分隔的方式打印各个字节。
val myArr : Array[Byte] = byteStringMessage.toArray
log.info(s" byte array : ${myArr.mkString(" ")}")
我是 Scala 和 Akka 的新手。我正在使用 LoggingAdapter 来记录 ByteString 消息。我看到一个常见的场景,其中相当大的消息被截断。例如,
我需要查看整个消息。请帮帮我。
这是因为akka.util.ByteString.toString
方法中的逻辑:
override def toString(): String = {
val maxSize = 100
if (size > maxSize)
take(maxSize).toString + s"... and [${size - maxSize}] more"
else
super.toString
}
您可以将 ByteString
转换为 List
,这将打印所有内容。
val myBs: ByteString = ??? //some very long ByteString
println(myBs) //this will get truncated
println(myBs.toList) //but this will not
我们可以将 ByteString 转换为数组,然后以 space 分隔的方式打印各个字节。
val myArr : Array[Byte] = byteStringMessage.toArray
log.info(s" byte array : ${myArr.mkString(" ")}")