Protocol Buffer是 Google 开发的用于结构化数据交换格式,被广泛用于 Google 内部及外部很多服务。目前,日志服务也使用 Protocol Buffer 格式作为标准的日志写入格式。当用户需要写入日志时,需要把原始日志数据序列化成如下格式的 Protocol Buffer 数据流后才能通过 API 写入服务端:

message Log
{
    required uint32 Time = 1;// UNIX Time Format
    message Content
    {
        required string Key = 1;
        required string Value = 2;
    }  
    repeated Content Contents = 2;
}

message LogTag
{
    required string Key = 1;
    required string Value = 2;
}

message LogGroup
{
    repeated Log Logs= 1;
    optional string Reserved = 2; // reserved fields
    optional string Topic = 3;
    optional string Source = 4;
    repeated LogTag LogTags = 6;
}

message LogGroupList
{
    repeated LogGroup logGroupList = 1;
}
说明
  • 由于Protobuf对 Key-Value 对不要求唯一性,因此需要避免出现该情况,否则行为为未定义。
  • 关于 Protocol Buffer 格式的更多信息请参考其 Github 首页
  • 关于日志服务写入日志的 API 的详细描述,请参考 PostLogStoreLogs