Skip to content

Commit 3a2a186

Browse files
committed
Changed logging to use zerolog
1 parent 01b0ad1 commit 3a2a186

File tree

8 files changed

+143
-39
lines changed

8 files changed

+143
-39
lines changed

generator-config.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
package main
22

3-
import "gopkg.in/yaml.v2"
3+
import (
4+
"github.com/rs/zerolog/log"
5+
"gopkg.in/yaml.v2"
6+
)
47

58
type OIDType string
69

@@ -53,7 +56,7 @@ func ParseConfiguration(b []byte) Configuration {
5356
configuration := new(Configuration)
5457
err := yaml.Unmarshal(b, configuration)
5558
if err != nil {
56-
log.Fatalf("[error] Error parsing configuration YAML: %v", err)
59+
log.Fatal().Err(err).Msg("Error parsing configuration YAML")
5760
}
5861
return *configuration
5962
}

go.mod

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,26 +4,28 @@ go 1.23.3
44

55
replace github.com/nerdalert/nflow-generato => .
66

7-
require (
8-
github.com/jessevdk/go-flags v1.5.0
9-
github.com/sirupsen/logrus v1.8.1
10-
)
7+
require github.com/jessevdk/go-flags v1.5.0
118

129
require (
1310
github.com/go-ole/go-ole v1.2.6 // indirect
11+
github.com/konsorten/go-windows-terminal-sequences v1.0.1 // indirect
1412
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect
13+
github.com/mattn/go-colorable v0.1.13 // indirect
14+
github.com/mattn/go-isatty v0.0.19 // indirect
1515
github.com/pkg/errors v0.9.1 // indirect
1616
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect
1717
github.com/prometheus/procfs v0.0.8 // indirect
1818
github.com/shirou/gopsutil/v3 v3.23.11 // indirect
1919
github.com/shoenig/go-m1cpu v0.1.6 // indirect
20+
github.com/sirupsen/logrus v1.4.2 // indirect
2021
github.com/tklauser/go-sysconf v0.3.12 // indirect
2122
github.com/tklauser/numcpus v0.6.1 // indirect
2223
github.com/yusufpapurcu/wmi v1.2.3 // indirect
2324
)
2425

2526
require (
2627
github.com/gosnmp/gosnmp v1.40.0
28+
github.com/rs/zerolog v1.34.0
2729
github.com/slayercat/GoSNMPServer v0.5.2
2830
golang.org/x/sys v0.15.0 // indirect
2931
gopkg.in/yaml.v2 v2.4.0

go.sum

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
2+
github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
23
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
34
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
45
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
56
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
67
github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY=
78
github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
9+
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
810
github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs=
911
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
1012
github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
@@ -16,9 +18,15 @@ github.com/gosnmp/gosnmp v1.40.0 h1:MvSqHZaNnhMKdn5IVhyYzCsVfXV1lgg6ZgLRku7FVcM=
1618
github.com/gosnmp/gosnmp v1.40.0/go.mod h1:CxVS6bXqmWZlafUj9pZUnQX5e4fAltqPcijxWpCitDo=
1719
github.com/jessevdk/go-flags v1.5.0 h1:1jKYvbxEjfUl0fmqTCOfonvskHHXMjBySTLW4y9LFvc=
1820
github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4=
21+
github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk=
1922
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
2023
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4=
2124
github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I=
25+
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
26+
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
27+
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
28+
github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA=
29+
github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
2230
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
2331
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
2432
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
@@ -27,16 +35,18 @@ github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF
2735
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE=
2836
github.com/prometheus/procfs v0.0.8 h1:+fpWZdT24pJBiqJdAwYBjPSk+5YmQzYNPYzQsdzLkt8=
2937
github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A=
38+
github.com/rs/xid v1.6.0/go.mod h1:7XoLgs4eV+QndskICGsho+ADou8ySMSjJKDIan90Nz0=
39+
github.com/rs/zerolog v1.34.0 h1:k43nTLIwcTVQAncfCw4KZ2VY6ukYoZaBPNOE8txlOeY=
40+
github.com/rs/zerolog v1.34.0/go.mod h1:bJsvje4Z08ROH4Nhs5iH600c3IkWhwp44iRc54W6wYQ=
3041
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
3142
github.com/shirou/gopsutil/v3 v3.23.11 h1:i3jP9NjCPUz7FiZKxlMnODZkdSIp2gnzfrvsu9CuWEQ=
3243
github.com/shirou/gopsutil/v3 v3.23.11/go.mod h1:1FrWgea594Jp7qmjHUUPlJDTPgcsb9mGnXDxavtikzM=
3344
github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM=
3445
github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ=
3546
github.com/shoenig/test v0.6.4/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k=
3647
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
48+
github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4=
3749
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
38-
github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE=
39-
github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
4050
github.com/slayercat/GoSNMPServer v0.5.2 h1:IK2d3kz6JoiYHbAZT5H7hrQQRzAD7rxF0iJZxWrV7Ns=
4151
github.com/slayercat/GoSNMPServer v0.5.2/go.mod h1:6taMSIwudR+7pKRO6dz2U+xoNccZds8eiMVlEN66fXY=
4252
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
@@ -93,7 +103,9 @@ golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBc
93103
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
94104
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
95105
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
106+
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
96107
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
108+
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
97109
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
98110
golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
99111
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=

nflow-generator.go

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ import (
1414
"time"
1515

1616
"github.com/jessevdk/go-flags"
17+
"github.com/rs/zerolog"
18+
"github.com/rs/zerolog/log"
1719
)
1820

1921
type TrafficType int
@@ -49,6 +51,10 @@ type CommandLineOptions struct {
4951
func main() {
5052
opts := CommandLineOptions{}
5153

54+
log.Logger = log.Output(zerolog.ConsoleWriter{Out: os.Stderr, TimeFormat: time.DateTime})
55+
zerolog.TimeFieldFormat = zerolog.TimeFormatUnix
56+
zerolog.SetGlobalLevel(zerolog.InfoLevel)
57+
5258
_, err := flags.Parse(&opts)
5359
if err != nil {
5460
showUsage()
@@ -136,23 +142,23 @@ func runGenerator(generatorConfiguration *GeneratorConfiguration, wg *sync.WaitG
136142
collector := collectorConfiguration.CollectorIP + ":" + collectorConfiguration.CollectorPort
137143
udpAddr, err := net.ResolveUDPAddr("udp", collector)
138144
if err != nil {
139-
log.Fatal(err)
145+
log.Fatal().Err(err)
140146
}
141147
conn, err := net.DialUDP("udp", nil, udpAddr)
142148
defer func() {
143149
wg.Wait()
144150
conn.Close()
145151
}()
146152
if err != nil {
147-
log.Fatal("Error connecting to the target collector: ", err)
153+
log.Fatal().Err(err).Msg("Error connecting to the target collector:")
148154
}
149155

150156
for _, flowDefinition := range generatorConfiguration.FlowConfigurations {
151157
wg.Add(1)
152158
go sendFlows(conn, flowDefinition, wg)
153159
}
154160

155-
log.Infof("sending netflow data to a collector ip: %s and port: %s. \n"+
161+
log.Info().Msgf("sending netflow data to a collector ip: %s and port: %s. - "+
156162
"Use ctrl^c to terminate the app.", collectorConfiguration.CollectorIP, collectorConfiguration.CollectorPort)
157163
}
158164

@@ -164,7 +170,7 @@ func sendFlows(conn *net.UDPConn, flowDefinition *FlowConfiguration, wg *sync.Wa
164170

165171
intervall, err := time.ParseDuration(flowDefinition.ReportingIntervall)
166172
if err != nil {
167-
log.Fatal("Failed to parse reporting intervall \""+flowDefinition.ReportingIntervall+"\" due to ", err.Error())
173+
log.Fatal().Err(err).Msgf("Failed to parse reporting intervall \"%s\" due to ", flowDefinition.ReportingIntervall)
168174
}
169175

170176
start := time.Now()
@@ -174,7 +180,7 @@ func sendFlows(conn *net.UDPConn, flowDefinition *FlowConfiguration, wg *sync.Wa
174180
buffer := BuildNFlowPayload(data)
175181
_, err = conn.Write(buffer.Bytes())
176182
if err != nil {
177-
log.Fatal("Error connecting to the target collector: ", err)
183+
log.Fatal().Err(err).Msg("Error connecting to the target collector")
178184
}
179185
time.Sleep(intervall - time.Since(start))
180186
start = flowEnd
@@ -216,7 +222,7 @@ func parseTrafficType(trafficTypeString string) TrafficType {
216222
trafficType = CLDAP
217223

218224
default:
219-
log.Fatal("Failed to parse netflow traffic definition" + trafficTypeString)
225+
log.Fatal().Msgf("Failed to parse netflow traffic definition %s", trafficTypeString)
220226
showUsage()
221227
os.Exit(1)
222228
}

nflow_logging.go

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

nflow_payload.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import (
66
"math/rand"
77
"net"
88
"time"
9+
10+
"github.com/rs/zerolog/log"
911
)
1012

1113
// Start time for this instance, used to compute sysUptime
@@ -84,12 +86,12 @@ func BuildNFlowPayload(data Netflow) bytes.Buffer {
8486
buffer := new(bytes.Buffer)
8587
err := binary.Write(buffer, binary.BigEndian, &data.Header)
8688
if err != nil {
87-
log.Println("Writing netflow header failed:", err)
89+
log.Warn().Err(err).Msg("Writing netflow header failed:")
8890
}
8991
for _, record := range data.Records {
9092
err := binary.Write(buffer, binary.BigEndian, &record)
9193
if err != nil {
92-
log.Println("Writing netflow record failed:", err)
94+
log.Warn().Err(err).Msg("Writing netflow record failed:")
9395
}
9496
}
9597
return *buffer
@@ -156,7 +158,7 @@ func PortForTrafficType(trafficType TrafficType) uint16 {
156158
case CLDAP:
157159
return CLDAP_PORT
158160
}
159-
log.Fatal("Unknown traffic definition")
161+
log.Fatal().Msg("Unknown traffic definition")
160162
return 0
161163
}
162164

@@ -190,7 +192,7 @@ func ProtocollForTrafficType(trafficType TrafficType) int {
190192
return 17
191193
default:
192194
}
193-
log.Fatal("Unknown traffic definition")
195+
log.Fatal().Msg("Unknown traffic definition")
194196
return 0
195197
}
196198

snmp.go

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
package main
22

33
import (
4-
"os"
54
"strconv"
65
"sync"
76

87
"github.com/gosnmp/gosnmp"
9-
"github.com/sirupsen/logrus"
8+
"github.com/rs/zerolog/log"
109
"github.com/slayercat/GoSNMPServer"
1110
)
1211

@@ -27,13 +26,12 @@ OIDLooP:
2726
oidType = gosnmp.Counter64
2827
oidValueUint, err := strconv.ParseUint(oid.Value, 10, 0)
2928
if err != nil {
30-
log.Warn(err)
29+
log.Warn().Err(err)
3130
continue OIDLooP
3231
}
33-
log.Info(oidValueUint)
3432
msg = GoSNMPServer.Asn1Counter64Unwrap(oidValueUint)
3533
default:
36-
log.Warn("unknown oid Type " + oid.Type)
34+
log.Warn().Msgf("unknown oid Type %s", oid.Type)
3735
continue OIDLooP
3836
}
3937

@@ -46,12 +44,10 @@ OIDLooP:
4644
oids = append(oids, &oidObj)
4745

4846
}
49-
var log = logrus.New()
50-
log.Out = os.Stdout
51-
log.Level = logrus.InfoLevel
47+
var logger = &ZeroLogger{}
5248

5349
master := GoSNMPServer.MasterAgent{
54-
Logger: log,
50+
Logger: logger,
5551
SecurityConfig: GoSNMPServer.SecurityConfig{
5652
AuthoritativeEngineBoots: 1,
5753
Users: []gosnmp.UsmSecurityParameters{
@@ -75,7 +71,7 @@ OIDLooP:
7571
serverAddress := conf.CollectorIP + ":" + conf.CollectorPort
7672
err := server.ListenUDP("udp", serverAddress)
7773
if err != nil {
78-
log.Printf("Error in listen: %+v", err)
74+
log.Error().Err(err).Msg("Error in listen")
7975
}
8076
go server.ServeForever()
8177
startUpWait.Done()

zerologSnmpLogger.go

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
package main
2+
3+
import (
4+
"fmt"
5+
6+
"github.com/rs/zerolog/log"
7+
)
8+
9+
type ZeroLogger struct {
10+
}
11+
12+
func (l *ZeroLogger) Debug(args ...interface{}) {
13+
log.Debug().Msg(fmt.Sprint(args...))
14+
}
15+
16+
func (l *ZeroLogger) Debugf(format string, args ...interface{}) {
17+
log.Debug().Msgf(format, args...)
18+
}
19+
20+
func (l *ZeroLogger) Debugln(args ...interface{}) {
21+
log.Debug().Msg(fmt.Sprintln(args...))
22+
}
23+
24+
func (l *ZeroLogger) Error(args ...interface{}) {
25+
log.Error().Msg(fmt.Sprint(args...))
26+
}
27+
28+
func (l *ZeroLogger) Errorf(format string, args ...interface{}) {
29+
log.Error().Msgf(format, args...)
30+
}
31+
32+
func (l *ZeroLogger) Errorln(args ...interface{}) {
33+
log.Error().Msg(fmt.Sprintln(args...))
34+
}
35+
36+
func (l *ZeroLogger) Fatal(args ...interface{}) {
37+
log.Fatal().Msg(fmt.Sprint(args...))
38+
}
39+
40+
func (l *ZeroLogger) Fatalf(format string, args ...interface{}) {
41+
log.Fatal().Msgf(format, args...)
42+
}
43+
44+
func (l *ZeroLogger) Fatalln(args ...interface{}) {
45+
log.Fatal().Msg(fmt.Sprintln(args...))
46+
}
47+
48+
func (l *ZeroLogger) Info(args ...interface{}) {
49+
log.Info().Msg(fmt.Sprint(args...))
50+
}
51+
52+
func (l *ZeroLogger) Infof(format string, args ...interface{}) {
53+
log.Info().Msgf(format, args...)
54+
}
55+
56+
func (l *ZeroLogger) Infoln(args ...interface{}) {
57+
log.Info().Msg(fmt.Sprintln(args...))
58+
}
59+
60+
func (l *ZeroLogger) Trace(args ...interface{}) {
61+
log.Trace().Msg(fmt.Sprint(args...))
62+
}
63+
64+
func (l *ZeroLogger) Tracef(format string, args ...interface{}) {
65+
log.Trace().Msgf(format, args...)
66+
}
67+
68+
func (l *ZeroLogger) Traceln(args ...interface{}) {
69+
log.Trace().Msg(fmt.Sprintln(args...))
70+
}
71+
72+
func (l *ZeroLogger) Warn(args ...interface{}) {
73+
log.Warn().Msg(fmt.Sprint(args...))
74+
}
75+
76+
func (l *ZeroLogger) Warnf(format string, args ...interface{}) {
77+
log.Warn().Msgf(format, args...)
78+
}
79+
80+
func (l *ZeroLogger) Warning(args ...interface{}) {
81+
log.Warn().Msg(fmt.Sprint(args...))
82+
}
83+
84+
func (l *ZeroLogger) Warningf(format string, args ...interface{}) {
85+
log.Warn().Msgf(format, args...)
86+
}
87+
88+
func (l *ZeroLogger) Warningln(args ...interface{}) {
89+
log.Warn().Msg(fmt.Sprintln(args...))
90+
}
91+
92+
func (l *ZeroLogger) Warnln(args ...interface{}) {
93+
log.Warn().Msg(fmt.Sprintln(args...))
94+
}

0 commit comments

Comments
 (0)