@marcel91200 / caddy Mirror · read-only / commits / e1b9a9d7
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 12, 18:15 UTC

core: Add `ctx.Slogger()` which returns an `slog` logger (#5945)

Francis Lavoie committed Jan 25, 2024 at 14:31 UTC e1b9a9d7b08f6f0c21feb8edf122585891aa7099
3 files changed +29
context.go
+26
@@ -19,10 +19,12 @@ import (
19 "encoding/json"
20 "fmt"
21 "log"
22 + "log/slog"
23 "reflect"
24
25 "github.com/caddyserver/certmagic"
26 "go.uber.org/zap"
27 + "go.uber.org/zap/exp/zapslog"
28
29 "github.com/caddyserver/caddy/v2/internal/filesystems"
30 )
@@ -503,6 +505,30 @@ func (ctx Context) Logger(module ...Module) *zap.Logger {
505 return ctx.cfg.Logging.Logger(mod)
506 }
507
508 +// Slogger returns a slog logger that is intended for use by
509 +// the most recent module associated with the context.
510 +func (ctx Context) Slogger() *slog.Logger {
511 + if ctx.cfg == nil {
512 + // often the case in tests; just use a dev logger
513 + l, err := zap.NewDevelopment()
514 + if err != nil {
515 + panic("config missing, unable to create dev logger: " + err.Error())
516 + }
517 + return slog.New(zapslog.NewHandler(l.Core(), nil))
518 + }
519 + mod := ctx.Module()
520 + if mod == nil {
521 + return slog.New(zapslog.NewHandler(Log().Core(), nil))
522 + }
523 +
524 + return slog.New(zapslog.NewHandler(
525 + ctx.cfg.Logging.Logger(mod).Core(),
526 + &zapslog.HandlerOptions{
527 + LoggerName: string(mod.CaddyModule().ID),
528 + },
529 + ))
530 +}
531 +
532 // Modules returns the lineage of modules that this context provisioned,
533 // with the most recent/current module being last in the list.
534 func (ctx Context) Modules() []Module {
go.mod
+1
@@ -35,6 +35,7 @@ require (
35 go.opentelemetry.io/otel/sdk v1.21.0
36 go.uber.org/automaxprocs v1.5.3
37 go.uber.org/zap v1.26.0
38 + go.uber.org/zap/exp v0.2.0
39 golang.org/x/crypto v0.18.0
40 golang.org/x/exp v0.0.0-20231214170342-aacd6d4b4611
41 golang.org/x/net v0.19.0
go.sum
+2
@@ -668,6 +668,8 @@ go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
668 go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM=
669 go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo=
670 go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so=
671 +go.uber.org/zap/exp v0.2.0 h1:FtGenNNeCATRB3CmB/yEUnjEFeJWpB/pMcy7e2bKPYs=
672 +go.uber.org/zap/exp v0.2.0/go.mod h1:t0gqAIdh1MfKv9EwN/dLwfZnJxe9ITAZN78HEWPFWDQ=
673 golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
674 golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
675 golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=