From a37354cb1834b876410a2b82b89c3308146d573c Mon Sep 17 00:00:00 2001 From: Natalia Goc Date: Wed, 25 Sep 2024 11:23:06 +0200 Subject: [PATCH] fix: message formatting errors in GELF exporter The library used to transport GELF messages did not prefix extra fields with `_` as was previously assumed and the application name was not passed correctly from configuration to the exporter. Now fixed. Related: goc_marek/salego#693 --- pkg/exporters/gelf_exporter/gelf.go | 9 ++++++++- pkg/exporters/gelf_exporter/trace.go | 1 + 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/pkg/exporters/gelf_exporter/gelf.go b/pkg/exporters/gelf_exporter/gelf.go index a4e9151..d12cc5e 100644 --- a/pkg/exporters/gelf_exporter/gelf.go +++ b/pkg/exporters/gelf_exporter/gelf.go @@ -31,10 +31,17 @@ func Log(writer *gelf.UDPWriter, msg GELFMessage) { if err != nil { log.Println(err) } + } else { + log.Fatalln("gelf.UDPWriter is not set!") } } func (g GELFMessage) GELFFormat() *gelf.Message { + prefixedExtras := make(map[string]interface{}, len(g.ExtraFields)) + for k, v := range g.ExtraFields { + prefixedExtras["_"+k] = v + } + return &gelf.Message{ Version: "1.1", Host: g.Host, @@ -42,6 +49,6 @@ func (g GELFMessage) GELFFormat() *gelf.Message { Full: g.LongMessage, TimeUnix: float64(g.Timestamp.Unix()), Level: int32(g.Level), - Extra: g.ExtraFields, + Extra: prefixedExtras, } } diff --git a/pkg/exporters/gelf_exporter/trace.go b/pkg/exporters/gelf_exporter/trace.go index 476187c..873655c 100644 --- a/pkg/exporters/gelf_exporter/trace.go +++ b/pkg/exporters/gelf_exporter/trace.go @@ -29,6 +29,7 @@ func New(options ...Option) (*Exporter, error) { return &Exporter{ gelfWriter: writer, + appName: cfg.AppName, }, nil }