protoc-gen-zerolog

command
v0.0.0-...-40f0c59 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 25, 2025 License: Apache-2.0 Imports: 8 Imported by: 0

README

#+startup: content
#+title: zerolog生成插件
* protoc-gen-zerolog
给pb消息生成zerolog的object和Array方法.

因为zerolog不支持匿名函数的对象序列化方式. 所以所有map结构体都是单独生成一个结构体别名,然后添加zerolog的Object接口.

#+begin_src protobuf
message ZerologMessage {
  int32 id = 1;
  uint32 seq = 2;
  int64 ver = 3;
  string version = 4;
  map<int32, int32> mapdata = 5;
}
#+end_src

#+begin_src go
// map类型字段
type ZerologMessage_Mapdata map[int32]int32

func (field ZerologMessage_Mapdata) MarshalZerologObject(e *zerolog.Event) {
	for k, v := range field {
		e.Int32(strconv.FormatInt(int64(k), 10), v)
	}
}

// 结构体类型的Object方法
func (obj *ZerologMessage) MarshalZerologObject(e *zerolog.Event) {
	e.Int32("id", obj.Id)
	e.Uint32("seq", obj.Seq)
	e.Int64("ver", obj.Ver)
	e.Str("version", obj.Version)
	e.Object("mapdata", ZerologMessage_Mapdata(obj.Mapdata))
}

// 结构体类型的Array方法
type ZerologMessageArray []*ZerologMessage

func (obj ZerologMessageArray) MarshalZerologArray(a *zerolog.Array) {
	for _, v := range obj {
		a.Object(v)
	}
}
#+end_src

Documentation

The Go Gopher

There is no documentation for this package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL