1- package http
1+ package vault
22
33import (
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+ }
0 commit comments