Skip to content

Commit 74a325b

Browse files
authored
fix: use zap for logging across gsw_service and some apps (#62)
1 parent 137e911 commit 74a325b

11 files changed

Lines changed: 78 additions & 72 deletions

File tree

.github/workflows/golangci-lint.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ jobs:
1919
with:
2020
go-version: stable
2121
- name: golangci-lint
22-
uses: golangci/golangci-lint-action@4afd733a84b1f43292c63897423277bb7f4313a9
22+
uses: golangci/golangci-lint-action@1e7e51e771db61008b38414a730f564565cf7c20
2323
with:
24-
version: v2.1
24+
version: v2.10
2525
only-new-issues: true

cmd/ipc_benchmark/main.go

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,16 @@ import (
44
"context"
55
"flag"
66
"fmt"
7-
"log"
87
"strings"
98
"sync"
109

1110
"net/http"
1211
_ "net/http/pprof"
1312

13+
"github.com/AarC10/GSW-V2/lib/logger"
1414
"github.com/AarC10/GSW-V2/lib/tlm"
1515
"github.com/AarC10/GSW-V2/proc"
16+
"go.uber.org/zap"
1617
)
1718

1819
type packetsMapFlagValue map[*tlm.TelemetryPacket]struct{}
@@ -61,22 +62,23 @@ func (p *packetsMapFlagValue) Packets() []*tlm.TelemetryPacket {
6162

6263
func initProfiling(pprofPort int) {
6364
go func() {
64-
log.Printf("Running pprof server at localhost:%d", pprofPort)
65-
err := http.ListenAndServe(fmt.Sprintf("localhost:%d", pprofPort), nil)
65+
pprofAddr := fmt.Sprintf("localhost:%d", pprofPort)
66+
logger.Info("Running pprof server", zap.String("addr", pprofAddr))
67+
err := http.ListenAndServe(pprofAddr, nil)
6668
if err != nil {
67-
log.Fatalf("Error starting pprof server: %v", err)
69+
logger.Fatal("error starting pprof server", zap.Error(err))
6870
}
6971
}()
7072
}
7173

7274
func main() {
7375
configData, err := proc.ReadTelemetryConfigFromShm("/dev/shm")
7476
if err != nil {
75-
log.Fatal(fmt.Errorf("couldn't read config from shm: %w", err))
77+
logger.Fatal("couldn't read config from shm", zap.Error(err))
7678
}
7779
_, err = proc.ParseConfigBytes(configData)
7880
if err != nil {
79-
log.Fatal(fmt.Errorf("couldn't parse shm config: %w", err))
81+
logger.Fatal("couldn't parse shm config", zap.Error(err))
8082
}
8183

8284
timeout := flag.Duration("duration", 0, "the test duration")
@@ -96,7 +98,7 @@ func main() {
9698
flag.Parse()
9799

98100
if !*isReader && !*isWriter {
99-
log.Fatal("use -reader and/or -writer to start the process as a reader or writer")
101+
logger.Fatal("use -reader and/or -writer to start the process as a reader or writer")
100102
}
101103

102104
if *profilePort != 0 {
@@ -113,20 +115,20 @@ func main() {
113115

114116
var wg sync.WaitGroup
115117
if *isReader {
116-
log.Println("running reader")
118+
logger.Info("running reader")
117119
wg.Add(1)
118120
go func() {
119121
defer wg.Done()
120122
output := reader(ctx, packetsSlice)
121123
outputString, err := readerOutputFormat.GenerateReaderOutput(*output)
122124
if err != nil {
123-
log.Fatal(fmt.Errorf("couldn't generate output: %w", err))
125+
logger.Fatal("couldn't generate output", zap.Error(err))
124126
}
125127
fmt.Print(outputString)
126128
}()
127129
}
128130
if *isWriter {
129-
log.Println("running writer")
131+
logger.Info("running writer")
130132
wg.Add(1)
131133
go func() {
132134
defer wg.Done()

cmd/ipc_benchmark/reader.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,17 @@ import (
44
"context"
55
"encoding/binary"
66
"fmt"
7-
"log"
87
"os"
98
"strings"
109
"sync"
1110
"sync/atomic"
1211
"time"
1312

1413
"github.com/AarC10/GSW-V2/lib/ipc"
14+
"github.com/AarC10/GSW-V2/lib/logger"
1515
"github.com/AarC10/GSW-V2/lib/tlm"
1616
"github.com/AarC10/GSW-V2/proc"
17+
"go.uber.org/zap"
1718
)
1819

1920
const (
@@ -26,7 +27,7 @@ var totalPacketsLost atomic.Uint64
2627
func packetReader(ctx context.Context, packet tlm.TelemetryPacket) *OutputPacket {
2728
reader, err := proc.NewIpcShmReaderForPacket(packet, "/dev/shm")
2829
if err != nil {
29-
log.Fatal(fmt.Errorf("couldn't create reader for packet: %w", err))
30+
logger.Fatal("couldn't create reader for packet", zap.Error(err))
3031
}
3132

3233
defer reader.Cleanup()
@@ -73,11 +74,11 @@ func packetReader(ctx context.Context, packet tlm.TelemetryPacket) *OutputPacket
7374
}
7475
p, err := reader.Read(ctx)
7576
if err != nil {
76-
log.Fatal(fmt.Errorf("couldn't read packet: %w", err))
77+
logger.Fatal("couldn't read packet", zap.Error(err))
7778
}
7879
shmPacket, ok := p.(*ipc.ShmReaderMessage)
7980
if !ok {
80-
log.Fatal(fmt.Errorf("packet is not from shm IPC reader"))
81+
logger.Fatal("packet is not from shm IPC reader")
8182
}
8283

8384
data := shmPacket.Data()

cmd/ipc_benchmark/writer.go

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,14 @@ import (
44
"context"
55
"encoding/binary"
66
"fmt"
7-
"log"
87
"net"
98
"sync"
109
"time"
1110

11+
"github.com/AarC10/GSW-V2/lib/logger"
1212
"github.com/AarC10/GSW-V2/lib/tlm"
1313
"github.com/AarC10/GSW-V2/proc"
14+
"go.uber.org/zap"
1415
)
1516

1617
func createPacket(size int, seq uint64) []byte {
@@ -29,6 +30,7 @@ func packetWriter(ctx context.Context, serverAddress string, port, size int, wri
2930
if err != nil {
3031
return fmt.Errorf("resolving address: %w", err)
3132
}
33+
log := logger.Log().Named("packet_writer").With(zap.String("server", serverAddr.String()))
3234

3335
conn, err := net.DialUDP("udp", nil, serverAddr)
3436
if err != nil {
@@ -37,7 +39,7 @@ func packetWriter(ctx context.Context, serverAddress string, port, size int, wri
3739
defer func() {
3840
err := conn.Close()
3941
if err != nil {
40-
log.Println("couldn't close connection", err)
42+
log.Error("couldn't close connection to gsw", zap.Error(err))
4143
}
4244
}()
4345

@@ -55,7 +57,7 @@ func packetWriter(ctx context.Context, serverAddress string, port, size int, wri
5557
packet := createPacket(size, sequence)
5658
_, err := conn.Write(packet)
5759
if err != nil {
58-
fmt.Printf("error writing packet (%s): %v\n", serverAddr.String(), err)
60+
log.Error("error writing packet", zap.Error(err))
5961
}
6062
sequence += 1
6163
}
@@ -67,7 +69,7 @@ func packetWriter(ctx context.Context, serverAddress string, port, size int, wri
6769
packet := createPacket(size, sequence)
6870
_, err := conn.Write(packet)
6971
if err != nil {
70-
fmt.Printf("error writing packet (%s): %v\n", serverAddr.String(), err)
72+
log.Error("error writing packet", zap.Error(err))
7173
}
7274
sequence += 1
7375
}
@@ -84,7 +86,7 @@ func writer(ctx context.Context, serverAddress string, packets []*tlm.TelemetryP
8486
defer wg.Done()
8587
err := packetWriter(ctx, serverAddress, port, size, writerSleep)
8688
if err != nil {
87-
log.Fatal("error running packet writer:", err)
89+
logger.Fatal("error running packet writer", zap.Error(err))
8890
}
8991
}(serverAddress, packet.Port, size, writerSleep)
9092
}

cmd/mqtt_producer/main.go

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,16 @@ import (
1111
"errors"
1212
"flag"
1313
"fmt"
14-
"log"
1514
"os"
1615
"os/signal"
1716
"sync"
1817
"syscall"
1918

19+
"github.com/AarC10/GSW-V2/lib/logger"
2020
"github.com/AarC10/GSW-V2/lib/tlm"
2121
"github.com/AarC10/GSW-V2/proc"
2222
mqtt "github.com/eclipse/paho.mqtt.golang"
23+
"go.uber.org/zap"
2324
)
2425

2526
var (
@@ -33,11 +34,11 @@ func main() {
3334

3435
configData, err := proc.ReadTelemetryConfigFromShm(*shmDir)
3536
if err != nil {
36-
log.Fatal(err)
37+
logger.Fatal("error reading telemetry config from shm", zap.Error(err))
3738
}
3839
_, err = proc.ParseConfigBytes(configData)
3940
if err != nil {
40-
log.Fatal(err)
41+
logger.Fatal("error parsing telemetry config from gsw", zap.Error(err))
4142
}
4243

4344
opts := mqtt.NewClientOptions()
@@ -47,7 +48,7 @@ func main() {
4748

4849
client := mqtt.NewClient(opts)
4950
if token := client.Connect(); token.Wait() && token.Error() != nil {
50-
log.Fatal(token.Error())
51+
logger.Fatal("error connecting to mqtt and creating token", zap.Error(token.Error()))
5152
}
5253

5354
ctx, cancel := context.WithCancel(context.Background())
@@ -60,7 +61,7 @@ func main() {
6061
defer wg.Done()
6162
err := packetWriter(ctx, packet, client)
6263
if err != nil && !errors.Is(err, context.Canceled) {
63-
log.Printf("error in writer: %v", err)
64+
logger.Error("error in writer", zap.Error(err))
6465
}
6566
}(packet)
6667
}
@@ -69,7 +70,7 @@ func main() {
6970
sigChan := make(chan os.Signal, 1)
7071
signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM)
7172
<-sigChan
72-
log.Println("shutting down")
73+
logger.Info("shutting down")
7374
cancel()
7475
}()
7576

@@ -78,8 +79,8 @@ func main() {
7879
}
7980

8081
func packetWriter(ctx context.Context, packet tlm.TelemetryPacket, client mqtt.Client) error {
81-
pLog := log.New(os.Stderr, fmt.Sprintf("[%s] ", packet.Name), log.LstdFlags|log.Lmsgprefix)
82-
pLog.Println("starting streaming")
82+
pLog := logger.Log().With(zap.String("packet", packet.Name))
83+
pLog.Info("starting streaming")
8384

8485
reader, err := proc.NewIpcShmReaderForPacket(packet, *shmDir)
8586
if err != nil {
@@ -93,7 +94,7 @@ func packetWriter(ctx context.Context, packet tlm.TelemetryPacket, client mqtt.C
9394
return ctx.Err()
9495
}
9596
if err != nil {
96-
pLog.Printf("error reading packet: %v\n", err)
97+
pLog.Error("error reading packet", zap.Error(err))
9798
continue
9899
}
99100
data := p.Data()
@@ -105,12 +106,12 @@ func packetWriter(ctx context.Context, packet tlm.TelemetryPacket, client mqtt.C
105106
}
106107
val, err := tlm.InterpretMeasurementValue(meas, data[offset:offset+meas.Size])
107108
if err != nil {
108-
pLog.Printf("error interpreting measurement: %v\n", err)
109+
pLog.Error("error interpreting measurement", zap.Error(err))
109110
continue
110111
}
111112
jsonStr, err := json.Marshal(val)
112113
if err != nil {
113-
pLog.Printf("error marshaling measurement: %v\n", err)
114+
pLog.Error("error marshaling measurement", zap.Error(err))
114115
continue
115116
}
116117
// qos=0 delivery not guaranteed

cmd/telem_view/telem_view.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,13 @@ import (
1111
"syscall"
1212
"time"
1313

14+
"github.com/AarC10/GSW-V2/lib/logger"
1415
"github.com/AarC10/GSW-V2/lib/tlm"
1516
"github.com/AarC10/GSW-V2/lib/util"
1617
"github.com/AarC10/GSW-V2/proc"
1718
"github.com/gdamore/tcell/v2"
1819
"github.com/rivo/tview"
20+
"go.uber.org/zap"
1921
)
2022

2123
const valueColWidth = 12
@@ -35,13 +37,10 @@ func main() {
3537
flag.Parse()
3638
configData, err := proc.ReadTelemetryConfigFromShm(*shmDir)
3739
if err != nil {
38-
fmt.Println("*** Error accessing config file. Make sure the GSW service is running. ***")
39-
fmt.Printf("(%v)\n", err)
40-
return
40+
logger.Fatal("couldn't read config from gsw", zap.Error(err))
4141
}
4242
if _, err = proc.ParseConfigBytes(configData); err != nil {
43-
fmt.Printf("Error parsing YAML: %v\n", err)
44-
return
43+
logger.Fatal("couldn't parse gsw config", zap.Error(err))
4544
}
4645

4746
var hexOn atomic.Bool
@@ -144,17 +143,18 @@ func main() {
144143
rowIndex := 1
145144
for _, packet := range proc.GswConfig.TelemetryPackets {
146145
go func(pkt tlm.TelemetryPacket, baseRow int) {
146+
log := logger.Log().Named("packet_reader").With(zap.String("packet", pkt.Name))
147147
reader, err := proc.NewIpcShmReaderForPacket(pkt, *shmDir)
148148
if err != nil {
149-
fmt.Printf("Error creating reader: %v\n", err)
149+
log.Error("error creating reader", zap.Error(err))
150150
return
151151
}
152152
defer reader.Cleanup()
153153

154154
for {
155155
p, err := reader.Read(context.TODO())
156156
if err != nil {
157-
fmt.Printf("Error reading packet: %v\n", err)
157+
log.Error("error reading packet", zap.Error(err))
158158
continue
159159
}
160160
data := p.Data()

lib/db/influx_v1.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,13 @@ func (h *InfluxDBV1Handler) Initialize(host string, port int) error {
1919
h.addr = fmt.Sprintf("%s:%d", host, port)
2020
addr, err := net.ResolveUDPAddr("udp", h.addr)
2121
if err != nil {
22-
fmt.Println("Error creating InfluxDB UDP client:", err)
23-
return err
22+
return fmt.Errorf("resolving db address: %w", err)
2423
}
2524

26-
logger.Info("Database UDP connection string: ", zap.String("url", addr.String()))
25+
logger.Info("resolved database address", zap.String("url", addr.String()))
2726

2827
conn, err := net.DialUDP("udp", nil, addr)
2928
if err != nil {
30-
fmt.Println("Error creating InfluxDB UDP client:", err)
3129
return err
3230
}
3331

lib/ipc/shm.go

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,15 @@ import (
44
"context"
55
"errors"
66
"fmt"
7-
"log"
87
"os"
98
"path/filepath"
109
"sync/atomic"
1110
"syscall"
1211
"time"
1312
"unsafe"
13+
14+
"github.com/AarC10/GSW-V2/lib/logger"
15+
"go.uber.org/zap"
1416
)
1517

1618
type shmFileHeader struct {
@@ -112,20 +114,21 @@ func CreateShmReader(identifier string, shmDir string) (*ShmHandler, error) {
112114
func (handler *ShmHandler) Cleanup() {
113115
if handler.data != nil {
114116
if err := syscall.Munmap(handler.data); err != nil {
115-
log.Printf("failed to unmap memory: %v\n", err)
117+
logger.Error("failed to unmap memory", zap.Error(err))
116118
}
117119
handler.data = nil
118120
}
119121
if handler.file != nil {
120122
if err := handler.file.Close(); err != nil {
121-
log.Printf("failed to close file: %v\n", err)
123+
logger.Error("failed to close file", zap.Error(err))
122124
}
123125

124126
if handler.mode == handlerModeWriter {
125127
if err := os.Remove(handler.file.Name()); err != nil {
126-
log.Printf("failed to remove shm file: %v\n", err)
128+
logger.Error("failed to remove shm file", zap.Error(err))
129+
127130
} else {
128-
log.Printf("removed shm file: %s\n", handler.file.Name())
131+
logger.Info("removed shm file", zap.String("shm", handler.file.Name()))
129132
}
130133
}
131134

0 commit comments

Comments
 (0)