Skip to content

Commit 79fc3bb

Browse files
committed
feat: switch to zerolog for logging
1 parent 6627db3 commit 79fc3bb

File tree

5 files changed

+64
-90
lines changed

5 files changed

+64
-90
lines changed

examples/simple/main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import (
99
)
1010

1111
func main() {
12-
clientConfig := telemetry_client.Config{
12+
clientConfig := telemetry_client.GTClientOpts{
1313
StatsEnabled: true,
1414
}
1515

go.mod

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,13 @@ go 1.21.4
44

55
require (
66
github.com/kaitai-io/kaitai_struct_go_runtime v0.10.0
7+
github.com/rs/zerolog v1.32.0
78
golang.org/x/crypto v0.22.0
89
)
910

10-
require golang.org/x/text v0.14.0 // indirect
11+
require (
12+
github.com/mattn/go-colorable v0.1.13 // indirect
13+
github.com/mattn/go-isatty v0.0.19 // indirect
14+
golang.org/x/sys v0.19.0 // indirect
15+
golang.org/x/text v0.14.0 // indirect
16+
)

go.sum

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,23 @@
1+
github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
2+
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
13
github.com/kaitai-io/kaitai_struct_go_runtime v0.10.0 h1:bxazq0XLMSVMm/DIVFLl9BqIWehrqcLsyVWSacEjIKE=
24
github.com/kaitai-io/kaitai_struct_go_runtime v0.10.0/go.mod h1:fBebEoDoc0xNbZsIcRQWqDp4jViaTKv6uxAUjmCFGgM=
5+
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
6+
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
7+
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
8+
github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA=
9+
github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
10+
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
11+
github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
12+
github.com/rs/zerolog v1.32.0 h1:keLypqrlIjaFsbmJOBdB/qvyF8KEtCWHwobLp5l/mQ0=
13+
github.com/rs/zerolog v1.32.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss=
314
golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30=
415
golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M=
16+
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
17+
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
18+
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
19+
golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o=
20+
golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
521
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
622
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
723
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=

internal/utils/logger.go

Lines changed: 0 additions & 61 deletions
This file was deleted.

telemetry_client.go

Lines changed: 40 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,13 @@ package telemetry
33
import (
44
"bytes"
55
"encoding/binary"
6-
"fmt"
7-
"log"
86
"net"
7+
"os"
98
"time"
109

1110
"github.com/kaitai-io/kaitai_struct_go_runtime/kaitai"
11+
"github.com/rs/zerolog"
1212
"github.com/vwhitteron/gt-telemetry/internal/gttelemetry"
13-
"github.com/vwhitteron/gt-telemetry/internal/utils"
1413
"github.com/vwhitteron/gt-telemetry/internal/vehicles"
1514
"golang.org/x/crypto/salsa20"
1615
)
@@ -33,48 +32,62 @@ type statistics struct {
3332
PacketsTotal int
3433
}
3534

36-
type Config struct {
35+
type GTClientOpts struct {
3736
IPAddr string
3837
LogLevel string
38+
Logger *zerolog.Logger
3939
StatsEnabled bool
4040
VehicleDB string
4141
}
4242

4343
type GTClient struct {
44-
logger *utils.Logger
44+
log zerolog.Logger
4545
ipAddr string
4646
sendPort int
4747
receivePort int
4848
Telemetry *transformer
4949
Statistics *statistics
5050
}
5151

52-
func NewGTClient(config Config) (*GTClient, error) {
53-
if config.LogLevel == "" {
54-
config.LogLevel = "info"
52+
func NewGTClient(opts GTClientOpts) (*GTClient, error) {
53+
var log zerolog.Logger
54+
if opts.Logger != nil {
55+
log = *opts.Logger
56+
} else {
57+
log = zerolog.New(os.Stdout).With().Timestamp().Logger()
5558
}
56-
logger, err := utils.NewLogger(config.LogLevel)
57-
if err != nil {
58-
return nil, err
59+
60+
switch opts.LogLevel {
61+
case "debug":
62+
log = log.Level(zerolog.DebugLevel)
63+
case "info":
64+
log = log.Level(zerolog.InfoLevel)
65+
case "warn":
66+
log = log.Level(zerolog.WarnLevel)
67+
case "error":
68+
log = log.Level(zerolog.ErrorLevel)
69+
default:
70+
log = log.Level(zerolog.WarnLevel)
71+
log.Warn().Msg("Invalid log level, defaulting to warn")
5972
}
6073

61-
if config.IPAddr == "" {
62-
config.IPAddr = "255.255.255.255"
74+
if opts.IPAddr == "" {
75+
opts.IPAddr = "255.255.255.255"
6376
}
6477

65-
inventory, err := vehicles.NewInventory(config.VehicleDB)
78+
inventory, err := vehicles.NewInventory(opts.VehicleDB)
6679
if err != nil {
6780
return nil, err
6881
}
6982

7083
return &GTClient{
71-
logger: logger,
72-
ipAddr: config.IPAddr,
84+
log: log,
85+
ipAddr: opts.IPAddr,
7386
sendPort: 33739,
7487
receivePort: 33740,
7588
Telemetry: NewTransformer(inventory),
7689
Statistics: &statistics{
77-
enabled: config.StatsEnabled,
90+
enabled: opts.StatsEnabled,
7891
decodeTimeLast: time.Duration(0),
7992
packetRateLast: time.Now(),
8093
DecodeTimeAvg: time.Duration(0),
@@ -94,12 +107,12 @@ func NewGTClient(config Config) (*GTClient, error) {
94107
func (c *GTClient) Run() {
95108
addr, err := net.ResolveUDPAddr("udp", ":33740")
96109
if err != nil {
97-
log.Fatal(err)
110+
c.log.Fatal().Msgf("resolve UDP address: %s", err.Error())
98111
}
99112

100113
conn, err := net.ListenUDP("udp", addr)
101114
if err != nil {
102-
log.Fatal(err)
115+
c.log.Fatal().Msgf("listen UDP: %s", err.Error())
103116
}
104117
defer conn.Close()
105118

@@ -118,12 +131,12 @@ func (c *GTClient) Run() {
118131
buffer := make([]byte, 4096)
119132
bufLen, _, err := conn.ReadFromUDP(buffer)
120133
if err != nil {
121-
c.logger.Debug(fmt.Sprintf("Failed to receive telemetry: %s", err.Error()))
134+
c.log.Debug().Msgf("failed to receive telemetry: %s", err.Error())
122135
continue
123136
}
124137

125138
if len(buffer[:bufLen]) == 0 {
126-
c.logger.Debug("No data received")
139+
c.log.Debug().Msg("no data received")
127140
continue
128141
}
129142

@@ -136,7 +149,7 @@ func (c *GTClient) Run() {
136149

137150
err = rawTelemetry.Read(stream, nil, nil)
138151
if err != nil {
139-
c.logger.Error(fmt.Sprintf("Failed to parse telemetry: %s", err.Error()))
152+
c.log.Error().Msgf("failed to parse telemetry: %s", err.Error())
140153
c.Statistics.PacketsInvalid++
141154
}
142155

@@ -167,10 +180,10 @@ func (c *GTClient) collectStats() {
167180

168181
delta := int(c.Telemetry.SequenceID() - c.Statistics.packetIDLast)
169182
if delta > 1 {
170-
c.logger.Warn(fmt.Sprintf("Dropped packets detected: %d", delta-1))
183+
c.log.Warn().Int("dropped", delta-1).Msg("dropped packets detected")
171184
c.Statistics.PacketsDropped += int(delta - 1)
172185
} else if delta < 0 {
173-
c.logger.Warn("Delayed packet deteted")
186+
c.log.Warn().Msg("delayed packet detected")
174187
}
175188

176189
c.Statistics.packetIDLast = c.Telemetry.SequenceID()
@@ -189,7 +202,7 @@ func (c *GTClient) collectStats() {
189202
}
190203

191204
func (c *GTClient) SendHeartbeat(conn *net.UDPConn) {
192-
c.logger.Debug("Sending heartbeat")
205+
c.log.Debug().Msg("Sending heartbeat")
193206
c.Statistics.Heartbeat = true
194207
defer func() {
195208
time.Sleep(250 * time.Millisecond)
@@ -201,11 +214,11 @@ func (c *GTClient) SendHeartbeat(conn *net.UDPConn) {
201214
Port: c.sendPort,
202215
})
203216
if err != nil {
204-
log.Fatal(err)
217+
c.log.Fatal().Msgf("write to udp: %s", err.Error())
205218
}
206219
err = conn.SetReadDeadline(time.Now().Add(10 * time.Second))
207220
if err != nil {
208-
log.Fatal(err)
221+
c.log.Fatal().Msgf("set read deadline: %s", err.Error())
209222
}
210223
}
211224

0 commit comments

Comments
 (0)