go - opentelemetry-proto 导入路径和 AnyValue
问题描述
有这个回购https://github.com/open-telemetry/opentelemetry-proto
我有兴趣将数据序列化为这种结构: https://github.com/open-telemetry/opentelemetry-proto/blob/main/opentelemetry/proto/logs/v1/logs.proto 如此处所述-> https:// github.com/open-telemetry/opentelemetry-proto/blob/main/opentelemetry/proto/logs/v1/logs.proto
我生成了Go文件
make gen-go
所以这会生成文件
$GOPATH/src/github.com/open-telemetry/opentelemetry-proto/gen/go/logs/v1
我用它导入了它(虽然我知道这是错误的方法,因为生成了多个 Go 文件)
import otl "github.com/open-telemetry/opentelemetry-proto/gen/go/logs/v1"
在这个
type LogRecord struct {
有这个字段:
Body *v11.AnyValue `protobuf:"bytes,5,opt,name=body,proto3" json:"body,omitempty"`
而且我不知道如何从字符串创建该类型的变量。名称文件是字符串类型,所以这很容易:)
lr := &otl.LogRecord{
Name : "example1",
但是身体呢?AnyValue 的定义在 github.com/open-telemetry/opentelemetry-proto/gen/go/common/v1/common.pb.go 但我不知道如何将字符串转换为这种类型。
编辑:我“认为”我想通了,但有人可以确认它是正确的吗?
package main
import (
"fmt"
"time"
"io/ioutil"
"log"
"github.com/golang/protobuf/proto"
pb "github.com/open-telemetry/opentelemetry-proto/gen/go/logs/v1"
v11 "github.com/open-telemetry/opentelemetry-proto/gen/go/common/v1"
)
func main() {
nanos := time.Now().UnixNano()
avs := v11.AnyValue_StringValue{
StringValue : "test",
}
av := &v11.AnyValue{
Value : &avs,
}
lr := &pb.LogRecord{
Name : "syslog1",
TimeUnixNano : uint64(nanos),
Body : av,
}
fmt.Println(lr.GetName())
out, err:= proto.Marshal(lr)
if err != nil {
log.Fatal(err.Error())
}
if err := ioutil.WriteFile("data", out, 0644); err != nil {
log.Fatalln("Failed to write address book:", err)
}
}
谢谢你。:) btw 如何为该结构添加一些属性?
Attributes []*v11.KeyValue `protobuf:"bytes,6,rep,name=attributes,proto3" json:"attributes,omitempty"`
解决方案
推荐阅读
- php - 有哪些方法可以创建能够顺利执行 shell 脚本的 web 应用程序
- javascript - 获取textarea的第一行值
- amazon-web-services - 在 C# 中调用 AWS API Gateway URL
- android - 如何从 Firebase 中删除 ViewPager 项目?
- python - 从具有任意长度值的字典创建数据框(使用回收的键作为列值)
- kubernetes - Kubernetes:哪些 Ingress Controller 可以在没有 TLS 的情况下用于 grpc 服务?
- visual-studio - 如何在 Visual Studio 中使用 OpenCV Nuget 包发布我的 C# 项目?
- delphi - 将一个 Tchart 分成相等的部分,然后在 Firemonkey 中在其上绘制矩形
- python-3.x - Glade GtkFileChooserDialog 正在选择文件夹和文件
- sql - 传递变量时将 datetime 转换为 varchar 不起作用