Skip to content
This repository was archived by the owner on Jun 19, 2025. It is now read-only.

Commit 9da6220

Browse files
committed
Use log.level
1 parent 7b779b6 commit 9da6220

File tree

17 files changed

+75
-63
lines changed

17 files changed

+75
-63
lines changed

Dockerfile.dev

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM golang:1.21-alpine as build
1+
FROM golang:1.22-alpine as build
22

33
LABEL maintainer="MinIO Inc <[email protected]>"
44

cmd/kes/migrate.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ func migrate(args []string) {
109109
srcConf, err := kesconf.ReadFile(fromPath)
110110
cli.Assert(err == nil, err)
111111

112-
src, err := srcConf.KeyStore.Connect(ctx, false)
112+
src, err := srcConf.KeyStore.Connect(ctx)
113113
cli.Assert(err == nil, err)
114114

115115
iter := &kes.ListIter[string]{
@@ -121,7 +121,7 @@ func migrate(args []string) {
121121
dstConf, err := kesconf.ReadFile(toPath)
122122
cli.Assert(err == nil, err)
123123

124-
dst, err := dstConf.KeyStore.Connect(ctx, false)
124+
dst, err := dstConf.KeyStore.Connect(ctx)
125125
cli.Assert(err == nil, err)
126126

127127
var (

cmd/kes/server.go

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ func serverCmd(args []string) {
8787
cmd.StringVar(&tlsCertFlag, "cert", "", "Path to the TLS certificate")
8888
cmd.StringVar(&mtlsAuthFlag, "auth", "", "Controls how the server handles mTLS authentication")
8989
cmd.BoolVar(&devFlag, "dev", false, "Start the KES server in development mode")
90-
cmd.BoolVar(&verboseFlag, "verbose", false, "Log verbose output (Vault only)")
90+
cmd.BoolVar(&verboseFlag, "verbose", false, "Log verbose output")
9191
if err := cmd.Parse(args[1:]); err != nil {
9292
if errors.Is(err, flag.ErrHelp) {
9393
os.Exit(2)
@@ -176,18 +176,26 @@ func startServer(addrFlag, configFlag string, verbose bool) error {
176176
ctx, cancel := signal.NotifyContext(context.Background(), syscall.SIGINT, syscall.SIGTERM)
177177
defer cancel()
178178

179-
conf, err := rawConfig.Config(ctx, verbose)
179+
srv := &kes.Server{}
180+
logLevel := slog.LevelInfo
181+
if rawConfig.Log != nil {
182+
srv.ErrLevel.Set(rawConfig.Log.ErrLevel)
183+
srv.AuditLevel.Set(rawConfig.Log.AuditLevel)
184+
logLevel = rawConfig.Log.LogLevel
185+
}
186+
if verbose {
187+
logLevel = slog.LevelDebug
188+
}
189+
slog.SetLogLoggerLevel(logLevel)
190+
191+
conf, err := rawConfig.Config(ctx)
180192
if err != nil {
181193
return err
182194
}
183195
defer conf.Keys.Close()
184196

185-
srv := &kes.Server{}
186197
conf.Cache = configureCache(conf.Cache)
187-
if rawConfig.Log != nil {
188-
srv.ErrLevel.Set(rawConfig.Log.ErrLevel)
189-
srv.AuditLevel.Set(rawConfig.Log.AuditLevel)
190-
}
198+
191199
sighup := make(chan os.Signal, 10)
192200
signal.Notify(sighup, syscall.SIGHUP)
193201
defer signal.Stop(sighup)
@@ -240,7 +248,7 @@ func startServer(addrFlag, configFlag string, verbose bool) error {
240248
fmt.Fprintf(os.Stderr, "Failed to reload server config: %v\n", err)
241249
continue
242250
}
243-
config, err := file.Config(ctx, verbose)
251+
config, err := file.Config(ctx)
244252
if err != nil {
245253
fmt.Fprintf(os.Stderr, "Failed to reload server config: %v\n", err)
246254
continue

go.mod

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

3-
go 1.21
3+
go 1.22
44

55
require (
66
aead.dev/mem v0.2.0
Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,16 @@
1-
package http
1+
package vault
22

33
import (
44
"log/slog"
55
"net/http"
6-
"slices"
76
"time"
87
)
98

10-
// LoggingTransport is an http.RoundTripper that logs the request and response.
11-
type LoggingTransport struct {
9+
type loggingTransport struct {
1210
http.RoundTripper
13-
skipPaths []string
1411
}
1512

16-
// NewLoggingTransport creates an http.RoundTripper that logs the request and response.
17-
func NewLoggingTransport(rt http.RoundTripper, skipPaths ...string) *LoggingTransport {
18-
return &LoggingTransport{
19-
RoundTripper: rt,
20-
skipPaths: skipPaths,
21-
}
22-
}
23-
24-
// RoundTrip implements the RoundTripper interface.
25-
func (lt *LoggingTransport) RoundTrip(req *http.Request) (*http.Response, error) {
13+
func (lt *loggingTransport) RoundTrip(req *http.Request) (*http.Response, error) {
2614
rt := lt.RoundTripper
2715
if rt == nil {
2816
rt = http.DefaultTransport
@@ -32,28 +20,42 @@ func (lt *LoggingTransport) RoundTrip(req *http.Request) (*http.Response, error)
3220
resp, err := rt.RoundTrip(req)
3321

3422
// don't log health checks
35-
if !slices.Contains(lt.skipPaths, req.URL.Path) {
23+
if req.URL.Path != "/v1/sys/health" {
3624
switch {
3725
case err != nil:
38-
slog.Info("HTTP error",
26+
slog.Debug("HTTP error",
3927
slog.String("method", req.Method),
4028
slog.String("url", req.URL.String()),
29+
slog.String("auth", obfuscateToken(req.Header.Get("X-Vault-Token"))),
4130
slog.Duration("duration", time.Since(start)),
4231
slog.String("error", err.Error()))
4332
case resp.StatusCode >= 300:
44-
slog.Info("HTTP error response",
33+
slog.Debug("HTTP error response",
4534
slog.String("method", req.Method),
4635
slog.String("url", req.URL.String()),
36+
slog.String("auth", obfuscateToken(req.Header.Get("X-Vault-Token"))),
4737
slog.Duration("duration", time.Since(start)),
4838
slog.String("status", resp.Status))
4939
default:
5040
slog.Debug("HTTP success response",
5141
slog.String("method", req.Method),
5242
slog.String("url", req.URL.String()),
43+
slog.String("auth", obfuscateToken(req.Header.Get("X-Vault-Token"))),
5344
slog.Duration("duration", time.Since(start)),
5445
slog.String("status", resp.Status))
5546
}
5647
}
5748

5849
return resp, err
5950
}
51+
52+
func obfuscateToken(token string) string {
53+
switch {
54+
case len(token) == 0:
55+
return ""
56+
case len(token) > 8:
57+
return "***" + token[len(token)-4:]
58+
default:
59+
return "***"
60+
}
61+
}

internal/keystore/vault/vault.go

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ import (
2727
"aead.dev/mem"
2828
vaultapi "github.com/hashicorp/vault/api"
2929
"github.com/minio/kes"
30-
xhttp "github.com/minio/kes/internal/http"
3130
"github.com/minio/kes/internal/keystore"
3231
kesdk "github.com/minio/kms-go/kes"
3332
)
@@ -41,7 +40,7 @@ type Store struct {
4140

4241
// Connect connects to a Hashicorp Vault server with
4342
// the given configuration.
44-
func Connect(ctx context.Context, c *Config, verbose bool) (*Store, error) {
43+
func Connect(ctx context.Context, c *Config) (*Store, error) {
4544
c = c.Clone()
4645

4746
if c.Engine == "" {
@@ -114,8 +113,8 @@ func Connect(ctx context.Context, c *Config, verbose bool) (*Store, error) {
114113
tr.DisableKeepAlives = true
115114
tr.MaxIdleConnsPerHost = -1
116115
}
117-
if verbose {
118-
config.HttpClient.Transport = xhttp.NewLoggingTransport(config.HttpClient.Transport, "/v1/sys/health")
116+
if slog.Default().Enabled(ctx, slog.LevelDebug) {
117+
config.HttpClient.Transport = &loggingTransport{config.HttpClient.Transport}
119118
}
120119
vaultClient, err := vaultapi.NewClient(config)
121120
if err != nil {
@@ -150,14 +149,8 @@ func Connect(ctx context.Context, c *Config, verbose bool) (*Store, error) {
150149
lastAuthSuccess = false
151150
}
152151
} else {
153-
if verbose {
154-
obfuscatedToken := secret.Auth.ClientToken
155-
if len(obfuscatedToken) > 10 {
156-
obfuscatedToken = obfuscatedToken[:2] + "***" + obfuscatedToken[len(obfuscatedToken)-4:]
157-
} else {
158-
obfuscatedToken = "***"
159-
}
160-
slog.Info("Authentication successful", slog.String("token", obfuscatedToken))
152+
if slog.Default().Enabled(ctx, slog.LevelDebug) {
153+
slog.Debug("Authentication successful", slog.String("token", obfuscateToken(secret.Auth.ClientToken)))
161154
}
162155
lastAuthSuccess = true
163156
}

internal/sys/build.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import (
1616
type BinaryInfo struct {
1717
Version string // The version of this binary
1818
CommitID string // The git commit hash
19-
Runtime string // The Go runtime version, e.g. go1.21.0
19+
Runtime string // The Go runtime version, e.g. go1.22.0
2020
Compiler string // The Go compiler used to build this binary
2121
}
2222

kesconf/aws_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ func TestAWS(t *testing.T) {
2929
ctx, cancel := testingContext(t)
3030
defer cancel()
3131

32-
store, err := config.KeyStore.Connect(ctx, false)
32+
store, err := config.KeyStore.Connect(ctx)
3333
if err != nil {
3434
t.Fatal(err)
3535
}

kesconf/azure_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ func TestAzure(t *testing.T) {
3535
ctx, cancel := testingContext(t)
3636
defer cancel()
3737

38-
store, err := config.KeyStore.Connect(ctx, false)
38+
store, err := config.KeyStore.Connect(ctx)
3939
if err != nil {
4040
t.Fatal(err)
4141
}

kesconf/config.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ type ymlFile struct {
6666
Log struct {
6767
Error env[string] `yaml:"error"`
6868
Audit env[string] `yaml:"audit"`
69+
Level env[string] `yaml:"level"`
6970
} `yaml:"log"`
7071

7172
Keys []struct {
@@ -299,6 +300,10 @@ func ymlToServerConfig(y *ymlFile) (*File, error) {
299300
if err != nil {
300301
return nil, err
301302
}
303+
logLevel, err := parseLogLevel(y.Log.Level.Value)
304+
if err != nil {
305+
return nil, err
306+
}
302307

303308
for path, api := range y.API.Paths {
304309
if api.Timeout.Value < 0 {
@@ -354,6 +359,7 @@ func ymlToServerConfig(y *ymlFile) (*File, error) {
354359
Log: &LogConfig{
355360
ErrLevel: errLevel,
356361
AuditLevel: auditLevel,
362+
LogLevel: logLevel,
357363
},
358364
KeyStore: keystore,
359365
}

0 commit comments

Comments
 (0)