gpt4 book ai didi

java - 谷歌 Protocol Buffer pretty-print

转载 作者:行者123 更新时间:2023-11-30 03:21:55 24 4
gpt4 key购买 nike

出于日志记录的目的,我需要将谷歌 Protocol Buffer 消息的内容写入日志输出(java)。尚未找到实现此目的的方法。

我找到了 TextFormat,但 TextFormat 需要 MessageOrBuilder 的实例。我当前需要打印的消息没有扩展MessageOrBuilder,它扩展了GenerateMessageLite并实现了MessageLiteOrBuilder。

知道如何从该消息中获得漂亮的或至少人类可读的字符串表示形式吗?

最佳答案

听起来您正在“精简模式”下使用 Protobuf,即您的 .proto 文件包含 option optimize_for = LITE_RUNTIME;。 Lite 模式删除了 Protocol Buffers 的所有自省(introspection)功能,而 TextFormat 依赖于这些自省(introspection)功能。因此,如果您希望能够使用 .toString() (并获得有用的结果),您将需要从 Lite 模式改回常规模式。

这意味着库会更大并且启动速度会更慢。不幸的是,确实没有办法解决这个问题。如果您想要内省(introspection)/字符串化,这就是成本。

不过,您可能会考虑其他一些选择:

  • 如果这是出于调试目的,您可以使用精简模式进行“发布”构建,而仅使用常规模式进行调试构建。
  • 对于生产日志记录,以原始 protobuf 格式写入日志并稍后对其进行解码可能是有意义的,例如使用 protoc --decode 或您自己编写的工具。

关于java - 谷歌 Protocol Buffer pretty-print ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31141973/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com