Skip to content

Commit e1b9a9d

Browse files
core: Add ctx.Slogger() which returns an slog logger (#5945)
1 parent 697cc59 commit e1b9a9d

File tree

3 files changed

+29
-0
lines changed

3 files changed

+29
-0
lines changed

context.go

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,12 @@ import (
1919
"encoding/json"
2020
"fmt"
2121
"log"
22+
"log/slog"
2223
"reflect"
2324

2425
"github.com/caddyserver/certmagic"
2526
"go.uber.org/zap"
27+
"go.uber.org/zap/exp/zapslog"
2628

2729
"github.com/caddyserver/caddy/v2/internal/filesystems"
2830
)
@@ -503,6 +505,30 @@ func (ctx Context) Logger(module ...Module) *zap.Logger {
503505
return ctx.cfg.Logging.Logger(mod)
504506
}
505507

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+
506532
// Modules returns the lineage of modules that this context provisioned,
507533
// with the most recent/current module being last in the list.
508534
func (ctx Context) Modules() []Module {

go.mod

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ require (
3535
go.opentelemetry.io/otel/sdk v1.21.0
3636
go.uber.org/automaxprocs v1.5.3
3737
go.uber.org/zap v1.26.0
38+
go.uber.org/zap/exp v0.2.0
3839
golang.org/x/crypto v0.18.0
3940
golang.org/x/exp v0.0.0-20231214170342-aacd6d4b4611
4041
golang.org/x/net v0.19.0

go.sum

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -668,6 +668,8 @@ go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
668668
go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM=
669669
go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo=
670670
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=
671673
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
672674
golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
673675
golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=

0 commit comments

Comments
 (0)