格式化日志的protobuf

时间:2015-10-13 06:06:18

标签: java json serialization protocol-buffers

给出一个带有一个字符串字段的简单protobuf消息:

message Sample{
    required string msg = 1;
}

以及打印它的示例代码:

Sample message = Sample.newBuilder()
    .setMsg("some text")
    .build();

System.out.println(message);
System.out.println(message);
System.out.println(message);

此输出的结果将是:

msg: "some text"

msg: "some text"

msg: "some text"

有' \ n'换行每条消息(实际上是每个字段)。 这对伐木工来说显然不好。

使用Gson将其序列化更糟糕,因为gson将序列化生成的许多其他字段......

{"bitField0_":1,"msg_":"some text","memoizedIsInitialized":1,"unknownFields":{"fields":{}},"memoizedSize":-1,"memoizedHashCode":0}

我们如何将protobuf消息转换为单个字符串而不换行?

1 个答案:

答案 0 :(得分:8)

邮件上的toString()会在每封邮件后生成一个空行,以便于阅读/分离。

对于整个邮件的记录目的,您应该使用TextFormat.shortDebugString(message)。如果您只想记录特定字段,请使用message.get...()方法。