Skip to content

Commit 062919b

Browse files
committed
Surface spiffe-go SDK logs to user
Signed-off-by: Noah Stride <noah.stride@goteleport.com>
1 parent 4d22e8b commit 062919b

File tree

3 files changed

+40
-0
lines changed

3 files changed

+40
-0
lines changed

cmd/credential_file.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ func oneshotX509CredentialFile(
4949
client, err := workloadapi.New(
5050
ctx,
5151
workloadapi.WithAddr(sf.workloadAPIAddr),
52+
workloadapi.WithLogger(internal.NewSPIFFESlogAdapter(slog.Default())),
5253
)
5354
if err != nil {
5455
return fmt.Errorf("creating workload api client: %w", err)
@@ -144,6 +145,7 @@ func daemonX509CredentialFile(
144145
client, err := workloadapi.New(
145146
ctx,
146147
workloadapi.WithAddr(sf.workloadAPIAddr),
148+
workloadapi.WithLogger(internal.NewSPIFFESlogAdapter(slog.Default())),
147149
)
148150
if err != nil {
149151
return fmt.Errorf("creating workload api client: %w", err)

cmd/credential_process.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"os"
88

99
"github.com/spf13/cobra"
10+
"github.com/spiffe/aws-spiffe-workload-helper/internal"
1011
"github.com/spiffe/go-spiffe/v2/workloadapi"
1112
)
1213

@@ -21,6 +22,7 @@ func newX509CredentialProcessCmd() (*cobra.Command, error) {
2122
client, err := workloadapi.New(
2223
ctx,
2324
workloadapi.WithAddr(sf.workloadAPIAddr),
25+
workloadapi.WithLogger(internal.NewSPIFFESlogAdapter(slog.Default())),
2426
)
2527
if err != nil {
2628
return fmt.Errorf("creating workload api client: %w", err)

internal/spiffe_log_bridge.go

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package internal
2+
3+
import (
4+
"fmt"
5+
"log/slog"
6+
7+
"github.com/spiffe/go-spiffe/v2/logger"
8+
)
9+
10+
var _ logger.Logger = (*SPIFFESlogAdapter)(nil)
11+
12+
// SPIFFESlogAdapter allows a slog logger to be injected into the SPIFFE GO
13+
// SDK.
14+
type SPIFFESlogAdapter struct {
15+
slog *slog.Logger
16+
}
17+
18+
func NewSPIFFESlogAdapter(slog *slog.Logger) SPIFFESlogAdapter {
19+
return SPIFFESlogAdapter{slog: slog}
20+
}
21+
22+
func (w SPIFFESlogAdapter) Debugf(format string, args ...interface{}) {
23+
w.slog.Debug(fmt.Sprintf(format, args...))
24+
}
25+
26+
func (w SPIFFESlogAdapter) Infof(format string, args ...interface{}) {
27+
w.slog.Info(fmt.Sprintf(format, args...))
28+
}
29+
30+
func (w SPIFFESlogAdapter) Warnf(format string, args ...interface{}) {
31+
w.slog.Warn(fmt.Sprintf(format, args...))
32+
}
33+
34+
func (w SPIFFESlogAdapter) Errorf(format string, args ...interface{}) {
35+
w.slog.Error(fmt.Sprintf(format, args...))
36+
}

0 commit comments

Comments
 (0)