@marcel91200 / caddy Mirror · read-only / commits / 45cf61b1
Fork 0

Fast and extensible multi-platform HTTP/1-2-3 web server with automatic HTTPS

Mirrored from https://github.com/Slazee/caddy.git

Synced Nov 11, 14:45 UTC

logging: Ensure `slog` error level logs don't print stack traces (#7512)

Francis Lavoie committed Mar 3, 2026 at 16:44 UTC 45cf61b1276b2cf79ce0147df8fa48c96e8e5356
3 files changed +17 -6
caddytest/integration/acme_test.go
+2 -2
@@ -51,7 +51,7 @@ func TestACMEServerWithDefaults(t *testing.T) {
51 Client: &acme.Client{
52 Directory: "https://acme.localhost:9443/acme/local/directory",
53 HTTPClient: tester.Client,
54 - Logger: slog.New(zapslog.NewHandler(logger.Core())),
54 + Logger: slog.New(zapslog.NewHandler(logger.Core(), zapslog.WithName("acmez"))),
55 },
56 ChallengeSolvers: map[string]acmez.Solver{
57 acme.ChallengeTypeHTTP01: &naiveHTTPSolver{logger: logger},
@@ -120,7 +120,7 @@ func TestACMEServerWithMismatchedChallenges(t *testing.T) {
120 Client: &acme.Client{
121 Directory: "https://acme.localhost:9443/acme/local/directory",
122 HTTPClient: tester.Client,
123 - Logger: slog.New(zapslog.NewHandler(logger.Core())),
123 + Logger: slog.New(zapslog.NewHandler(logger.Core(), zapslog.WithName("acmez"))),
124 },
125 ChallengeSolvers: map[string]acmez.Solver{
126 acme.ChallengeTypeHTTP01: &naiveHTTPSolver{logger: logger},
cmd/main.go
+7 -1
@@ -484,7 +484,13 @@ func setResourceLimits(logger *zap.Logger) func() {
484 // See https://pkg.go.dev/runtime/debug#SetMemoryLimit
485 _, _ = memlimit.SetGoMemLimitWithOpts(
486 memlimit.WithLogger(
487 - slog.New(zapslog.NewHandler(logger.Core())),
487 + slog.New(zapslog.NewHandler(
488 + logger.Core(),
489 + zapslog.WithName("memlimit"),
490 + // the default enables traces at ERROR level, this disables
491 + // them by setting it to a level higher than any other level
492 + zapslog.AddStacktraceAt(slog.Level(127)),
493 + )),
494 ),
495 memlimit.WithProvider(
496 memlimit.ApplyFallback(
context.go
+8 -3
@@ -608,6 +608,11 @@ func (ctx Context) Slogger() *slog.Logger {
608 core zapcore.Core
609 moduleID string
610 )
611 +
612 + // the default enables traces at ERROR level, this disables
613 + // them by setting it to a level higher than any other level
614 + tracesOpt := zapslog.AddStacktraceAt(slog.Level(127))
615 +
616 if ctx.cfg == nil {
617 // often the case in tests; just use a dev logger
618 l, err := zap.NewDevelopment()
@@ -616,16 +621,16 @@ func (ctx Context) Slogger() *slog.Logger {
621 }
622
623 core = l.Core()
619 - handler = zapslog.NewHandler(core)
624 + handler = zapslog.NewHandler(core, tracesOpt)
625 } else {
626 mod := ctx.Module()
627 if mod == nil {
628 core = Log().Core()
624 - handler = zapslog.NewHandler(core)
629 + handler = zapslog.NewHandler(core, tracesOpt)
630 } else {
631 moduleID = string(mod.CaddyModule().ID)
632 core = ctx.cfg.Logging.Logger(mod).Core()
628 - handler = zapslog.NewHandler(core, zapslog.WithName(moduleID))
633 + handler = zapslog.NewHandler(core, zapslog.WithName(moduleID), tracesOpt)
634 }
635 }
636