Skip to content

Commit ecc2abc

Browse files
committed
[logger] Revamp logger to use log/slog.
1 parent 829ae26 commit ecc2abc

File tree

14 files changed

+427
-185
lines changed

14 files changed

+427
-185
lines changed

cloudprober.go

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import (
2525
"context"
2626
"crypto/tls"
2727
"fmt"
28+
"log/slog"
2829
"net"
2930
"net/http"
3031
"net/http/pprof"
@@ -43,10 +44,10 @@ import (
4344
"github.com/cloudprober/cloudprober/servers"
4445
"github.com/cloudprober/cloudprober/surfacers"
4546
"github.com/cloudprober/cloudprober/sysvars"
46-
"github.com/golang/protobuf/proto"
4747
"google.golang.org/grpc"
4848
"google.golang.org/grpc/channelz/service"
4949
"google.golang.org/grpc/credentials"
50+
"google.golang.org/protobuf/encoding/prototext"
5051
)
5152

5253
const (
@@ -149,12 +150,7 @@ func InitFromConfig(configFile string) error {
149150
}
150151

151152
// Initialize sysvars module
152-
l, err := logger.NewCloudproberLog(sysvarsModuleName)
153-
if err != nil {
154-
return err
155-
}
156-
157-
if err := sysvars.Init(l, nil); err != nil {
153+
if err := sysvars.Init(logger.NewWithAttrs(slog.String("component", sysvarsModuleName)), nil); err != nil {
158154
return err
159155
}
160156

@@ -164,18 +160,15 @@ func InitFromConfig(configFile string) error {
164160
}
165161

166162
cfg := &configpb.ProberConfig{}
167-
if err := proto.UnmarshalText(configStr, cfg); err != nil {
163+
if err := prototext.Unmarshal([]byte(configStr), cfg); err != nil {
168164
return err
169165
}
170166

171-
globalLogger, err := logger.NewCloudproberLog("global")
172-
if err != nil {
173-
return fmt.Errorf("error in initializing global logger: %v", err)
174-
}
167+
globalLogger := logger.NewWithAttrs(slog.String("component", "global"))
175168

176169
// Start default HTTP server. It's used for profile handlers and
177170
// prometheus exporter.
178-
ln, err := initDefaultServer(cfg, l)
171+
ln, err := initDefaultServer(cfg, globalLogger)
179172
if err != nil {
180173
return err
181174
}

cmd/cloudprober.go

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ package main
2323
import (
2424
"context"
2525
"fmt"
26+
"log"
2627
"os"
2728
"os/signal"
2829
"runtime/pprof"
@@ -38,6 +39,7 @@ import (
3839
"github.com/cloudprober/cloudprober/config"
3940
configpb "github.com/cloudprober/cloudprober/config/proto"
4041
"github.com/cloudprober/cloudprober/config/runconfig"
42+
"github.com/cloudprober/cloudprober/logger"
4143
"github.com/cloudprober/cloudprober/sysvars"
4244
"github.com/cloudprober/cloudprober/web"
4345
"github.com/golang/glog"
@@ -64,6 +66,7 @@ var (
6466
var version string
6567
var buildTimestamp string
6668
var dirty string
69+
var l = &logger.Logger{}
6770

6871
func setupConfigTestVars() {
6972
configTestVars = map[string]string{
@@ -91,30 +94,30 @@ func setupProfiling() {
9194
var err error
9295
f, err = os.Create(*cpuprofile)
9396
if err != nil {
94-
glog.Exit(err)
97+
log.Fatal(err)
9598
}
9699
if err = pprof.StartCPUProfile(f); err != nil {
97-
glog.Errorf("Could not start CPU profiling: %v", err)
100+
log.Fatalf("Could not start CPU profiling: %v", err)
98101
}
99102
}
100103
go func(file *os.File) {
101104
<-sigChan
102105
pprof.StopCPUProfile()
103106
if *cpuprofile != "" {
104107
if err := file.Close(); err != nil {
105-
glog.Exit(err)
108+
log.Fatal(err)
106109
}
107110
}
108111
if *memprofile != "" {
109112
f, err := os.Create(*memprofile)
110113
if err != nil {
111-
glog.Exit(err)
114+
log.Fatal(err)
112115
}
113116
if err = pprof.WriteHeapProfile(f); err != nil {
114-
glog.Exit(err)
117+
log.Fatal(err)
115118
}
116119
if err := f.Close(); err != nil {
117-
glog.Exit(err)
120+
log.Fatal(err)
118121
}
119122
}
120123
os.Exit(1)
@@ -124,7 +127,7 @@ func setupProfiling() {
124127
func configFileToString(fileName string) string {
125128
b, err := file.ReadFile(fileName)
126129
if err != nil {
127-
glog.Exitf("Failed to read the config file: %v", err)
130+
log.Fatalf("Failed to read the config file: %v", err)
128131
}
129132
return string(b)
130133
}
@@ -133,28 +136,30 @@ func getConfig() string {
133136
if *configFile != "" {
134137
return configFileToString(*configFile)
135138
}
139+
136140
// On GCE first check if there is a config in custom metadata
137141
// attributes.
138142
if metadata.OnGCE() {
139143
if config, err := config.ReadFromGCEMetadata(configMetadataKeyName); err != nil {
140-
glog.Infof("Error reading config from metadata. Err: %v", err)
144+
l.Infof("Error reading config from metadata. Err: %v", err)
141145
} else {
142146
return config
143147
}
144148
}
149+
145150
// If config not found in metadata, check default config on disk
146151
if _, err := os.Stat(defaultConfigFile); !os.IsNotExist(err) {
147152
return configFileToString(defaultConfigFile)
148153
}
149-
glog.Warningf("Config file %s not found. Using default config.", defaultConfigFile)
154+
l.Warningf("Config file %s not found. Using default config.", defaultConfigFile)
150155
return config.DefaultConfig()
151156
}
152157

153158
func main() {
154159
flag.Parse()
155160

156161
if len(flag.Args()) > 0 {
157-
glog.Exitf("Unexpected non-flag arguments: %v", flag.Args())
162+
log.Fatalf("Unexpected non-flag arguments: %v", flag.Args())
158163
}
159164

160165
if dirty == "1" {
@@ -165,7 +170,7 @@ func main() {
165170
if buildTimestamp != "" {
166171
ts, err := strconv.ParseInt(buildTimestamp, 10, 64)
167172
if err != nil {
168-
glog.Exitf("Error parsing build timestamp (%s). Err: %v", buildTimestamp, err)
173+
log.Fatalf("Error parsing build timestamp (%s). Err: %v", buildTimestamp, err)
169174
}
170175
runconfig.SetBuildTimestamp(time.Unix(ts, 0))
171176
}
@@ -187,7 +192,7 @@ func main() {
187192
sysvars.Init(nil, configTestVars)
188193
text, err := config.ParseTemplate(getConfig(), sysvars.Vars(), nil)
189194
if err != nil {
190-
glog.Exitf("Error parsing config file. Err: %v", err)
195+
log.Fatalf("Error parsing config file. Err: %v", err)
191196
}
192197
fmt.Println(text)
193198
return
@@ -199,7 +204,7 @@ func main() {
199204
return v + "-test-value", nil
200205
})
201206
if err != nil {
202-
glog.Exitf("Error parsing config file. Err: %v", err)
207+
log.Fatalf("Error parsing config file. Err: %v", err)
203208
}
204209
cfg := &configpb.ProberConfig{}
205210
if err := prototext.Unmarshal([]byte(configStr), cfg); err != nil {
@@ -211,12 +216,12 @@ func main() {
211216
setupProfiling()
212217

213218
if err := cloudprober.InitFromConfig(getConfig()); err != nil {
214-
glog.Exitf("Error initializing cloudprober. Err: %v", err)
219+
log.Fatalf("Error initializing cloudprober. Err: %v", err)
215220
}
216221

217222
// web.Init sets up web UI for cloudprober.
218223
if err := web.Init(); err != nil {
219-
glog.Exitf("Error initializing web interface. Err: %v", err)
224+
log.Fatalf("Error initializing web interface. Err: %v", err)
220225
}
221226

222227
startCtx := context.Background()
@@ -234,7 +239,7 @@ func main() {
234239

235240
go func() {
236241
sig := <-sigs
237-
glog.Warningf("Received signal \"%v\", canceling the start context and waiting for %v before closing", sig, *stopTime)
242+
l.Warningf("Received signal \"%v\", canceling the start context and waiting for %v before closing", sig, *stopTime)
238243
cancelF()
239244
time.Sleep(*stopTime)
240245
os.Exit(0)

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
module github.com/cloudprober/cloudprober
22

3-
go 1.20
3+
go 1.21
44

55
require (
66
cloud.google.com/go v0.81.0

0 commit comments

Comments
 (0)