Skip to content

Commit d4bffe2

Browse files
authored
goflow2: use slog instead of logrus (#199)
This removes the `logrus` dependency as it's in maintenance-only mode.
1 parent b01b1aa commit d4bffe2

File tree

4 files changed

+110
-79
lines changed

4 files changed

+110
-79
lines changed

cmd/enricher/main.go

+28-15
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ import (
77
"flag"
88
"fmt"
99
"io"
10+
"log"
11+
"log/slog"
1012
"net"
1113
"os"
1214
"strings"
@@ -25,7 +27,6 @@ import (
2527
_ "github.com/netsampler/goflow2/v2/transport/kafka"
2628

2729
"github.com/oschwald/geoip2-golang"
28-
log "github.com/sirupsen/logrus"
2930
"google.golang.org/protobuf/encoding/protodelim"
3031
)
3132

@@ -92,23 +93,39 @@ func main() {
9293
os.Exit(0)
9394
}
9495

95-
lvl, _ := log.ParseLevel(*LogLevel)
96-
log.SetLevel(lvl)
96+
var loglevel slog.Level
97+
if err := loglevel.UnmarshalText([]byte(*LogLevel)); err != nil {
98+
log.Fatal("error parsing log level")
99+
}
100+
101+
lo := slog.HandlerOptions{
102+
Level: loglevel,
103+
}
104+
logger := slog.New(slog.NewTextHandler(os.Stderr, &lo))
105+
106+
switch *LogFmt {
107+
case "json":
108+
logger = slog.New(slog.NewJSONHandler(os.Stderr, &lo))
109+
}
110+
111+
slog.SetDefault(logger)
97112

98113
var dbAsn, dbCountry *geoip2.Reader
99114
var err error
100115
if *DbAsn != "" {
101116
dbAsn, err = geoip2.Open(*DbAsn)
102117
if err != nil {
103-
log.Fatal(err)
118+
slog.Error("error opening asn db", slog.String("error", err.Error()))
119+
os.Exit(1)
104120
}
105121
defer dbAsn.Close()
106122
}
107123

108124
if *DbCountry != "" {
109125
dbCountry, err = geoip2.Open(*DbCountry)
110126
if err != nil {
111-
log.Fatal(err)
127+
slog.Error("error opening country db", slog.String("error", err.Error()))
128+
os.Exit(1)
112129
}
113130
defer dbCountry.Close()
114131
}
@@ -120,16 +137,12 @@ func main() {
120137

121138
transporter, err := transport.FindTransport(*Transport)
122139
if err != nil {
123-
log.Fatal(err)
140+
slog.Error("error transporter", slog.String("error", err.Error()))
141+
os.Exit(1)
124142
}
125143
defer transporter.Close()
126144

127-
switch *LogFmt {
128-
case "json":
129-
log.SetFormatter(&log.JSONFormatter{})
130-
}
131-
132-
log.Info("starting enricher")
145+
logger.Info("starting enricher")
133146

134147
rdr := bufio.NewReader(os.Stdin)
135148

@@ -138,7 +151,7 @@ func main() {
138151
if err := protodelim.UnmarshalFrom(rdr, &msg); err != nil && errors.Is(err, io.EOF) {
139152
return
140153
} else if err != nil {
141-
log.Error(err)
154+
slog.Error("error unmarshalling message", slog.String("error", err.Error()))
142155
continue
143156
}
144157

@@ -150,13 +163,13 @@ func main() {
150163

151164
key, data, err := formatter.Format(&msg)
152165
if err != nil {
153-
log.Error(err)
166+
slog.Error("error formatting message", slog.String("error", err.Error()))
154167
continue
155168
}
156169

157170
err = transporter.Send(key, data)
158171
if err != nil {
159-
log.Error(err)
172+
slog.Error("error sending message", slog.String("error", err.Error()))
160173
continue
161174
}
162175

0 commit comments

Comments
 (0)