如何防止 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(" ")}")