fix: fix slog to always use array of Fields (#21426)

Upgrades to slog v3 which includes a small, but backward incompatible API change to the acceptible call arguments when logging. This change allows us to verify via compile time type checking that arguments are correct and won't cause a panic, as was possible in slog v1, which this replaces (v2 was tagged but never used in coder/coder).

It also updates dependencies that also use slog and were updated.

I've left the `aibridge` dependency as a commit SHA, under the assumption that the team there (cc @pawbana @dannykopping ) will tag and update the dependency soon and on their own schedule.

Other dependencies, I pushed new tags.
This commit is contained in:
Spike Curtis
2026-01-08 10:29:41 +04:00
committed by GitHub
parent d1b0722034
commit 49b34a716a
376 changed files with 789 additions and 546 deletions
+2 -1
View File
@@ -7,7 +7,8 @@ import (
"github.com/hashicorp/yamux"
"golang.org/x/xerrors"
"cdr.dev/slog"
"cdr.dev/slog/v3"
"github.com/coder/coder/v2/codersdk/drpcsdk"
"github.com/coder/coder/v2/tailnet/proto"
)
+2 -1
View File
@@ -27,7 +27,8 @@ import (
"tailscale.com/wgengine/wgcfg"
"tailscale.com/wgengine/wgcfg/nmcfg"
"cdr.dev/slog"
"cdr.dev/slog/v3"
"github.com/coder/coder/v2/tailnet/proto"
"github.com/coder/quartz"
)
+3 -2
View File
@@ -41,7 +41,8 @@ import (
"tailscale.com/wgengine/netstack"
"tailscale.com/wgengine/router"
"cdr.dev/slog"
"cdr.dev/slog/v3"
"github.com/coder/coder/v2/cryptorand"
"github.com/coder/coder/v2/tailnet/proto"
)
@@ -1004,7 +1005,7 @@ func (a addr) String() string { return a.ln.addr }
// Logger converts the Tailscale logging function to use a slog-compatible
// logger.
func Logger(logger interface {
Debug(ctx context.Context, str string, args ...any)
Debug(ctx context.Context, str string, fields ...slog.Field)
},
) tslogger.Logf {
return tslogger.Logf(func(format string, args ...any) {
+1 -1
View File
@@ -13,7 +13,7 @@ import (
"github.com/stretchr/testify/require"
"go.uber.org/goleak"
"cdr.dev/slog"
"cdr.dev/slog/v3"
"github.com/coder/coder/v2/tailnet"
"github.com/coder/coder/v2/tailnet/proto"
+2 -1
View File
@@ -21,7 +21,8 @@ import (
"tailscale.com/tailcfg"
"tailscale.com/util/dnsname"
"cdr.dev/slog"
"cdr.dev/slog/v3"
"github.com/coder/quartz"
"github.com/coder/retry"
+3 -2
View File
@@ -27,8 +27,9 @@ import (
"tailscale.com/types/key"
"tailscale.com/util/dnsname"
"cdr.dev/slog"
"cdr.dev/slog/sloggers/slogtest"
"cdr.dev/slog/v3"
"cdr.dev/slog/v3/sloggers/slogtest"
"github.com/coder/coder/v2/tailnet"
"github.com/coder/coder/v2/tailnet/proto"
"github.com/coder/coder/v2/tailnet/tailnettest"
+4 -3
View File
@@ -15,7 +15,8 @@ import (
"tailscale.com/tailcfg"
"tailscale.com/types/key"
"cdr.dev/slog"
"cdr.dev/slog/v3"
"github.com/coder/coder/v2/tailnet/proto"
)
@@ -164,7 +165,7 @@ func (c *coordinator) Coordinate(
if xerrors.Is(err, ErrClosed) {
logger.Debug(ctx, "coordinate failed: Coordinator is closed")
} else {
logger.Critical(ctx, "coordinate failed: %s", err.Error())
logger.Critical(ctx, "coordinate failed", slog.Error(err))
}
}
c.mu.Lock()
@@ -476,7 +477,7 @@ func (c *core) lostPeer(p *peer, closeErr string) error {
func (c *core) removePeerLocked(id uuid.UUID, kind proto.CoordinateResponse_PeerUpdate_Kind, reason, closeErr string) {
p, ok := c.peers[id]
if !ok {
c.logger.Critical(context.Background(), "removed non-existent peer %s", id)
c.logger.Critical(context.Background(), "removed non-existent peer", slog.F("peer_id", id))
return
}
c.updateTunnelPeersLocked(id, nil, kind, reason)
+3 -2
View File
@@ -8,8 +8,9 @@ import (
"github.com/google/uuid"
"github.com/stretchr/testify/require"
"cdr.dev/slog"
"cdr.dev/slog/sloggers/slogtest"
"cdr.dev/slog/v3"
"cdr.dev/slog/v3/sloggers/slogtest"
"github.com/coder/coder/v2/tailnet"
"github.com/coder/coder/v2/tailnet/proto"
"github.com/coder/coder/v2/tailnet/test"
+1 -1
View File
@@ -13,7 +13,7 @@ import (
"tailscale.com/derp"
"tailscale.com/tailcfg"
"cdr.dev/slog"
"cdr.dev/slog/v3"
"github.com/coder/websocket"
)
+2 -1
View File
@@ -12,7 +12,8 @@ import (
"tailscale.com/types/key"
"tailscale.com/wgengine"
"cdr.dev/slog"
"cdr.dev/slog/v3"
"github.com/coder/coder/v2/coderd/database/dbtime"
)
+1 -1
View File
@@ -8,7 +8,7 @@ import (
"github.com/google/uuid"
"cdr.dev/slog"
"cdr.dev/slog/v3"
"github.com/coder/coder/v2/tailnet/proto"
)
+2 -1
View File
@@ -15,7 +15,8 @@ import (
"storj.io/drpc/drpcserver"
"tailscale.com/tailcfg"
"cdr.dev/slog"
"cdr.dev/slog/v3"
"github.com/coder/coder/v2/apiversion"
"github.com/coder/coder/v2/codersdk/drpcsdk"
"github.com/coder/coder/v2/tailnet/proto"
+2 -1
View File
@@ -34,7 +34,8 @@ import (
"tailscale.com/types/key"
"tailscale.com/wgengine/capture"
"cdr.dev/slog"
"cdr.dev/slog/v3"
"github.com/coder/coder/v2/coderd/httpapi"
"github.com/coder/coder/v2/coderd/httpmw/loggermw"
"github.com/coder/coder/v2/coderd/tracing"
+1 -1
View File
@@ -17,7 +17,7 @@ import (
"golang.org/x/xerrors"
"tailscale.com/tailcfg"
"cdr.dev/slog"
"cdr.dev/slog/v3"
"github.com/coder/coder/v2/cryptorand"
)
+2 -1
View File
@@ -12,7 +12,8 @@ import (
"github.com/stretchr/testify/require"
"cdr.dev/slog"
"cdr.dev/slog/v3"
"github.com/coder/coder/v2/tailnet"
"github.com/coder/coder/v2/testutil"
)