Skip to content

Commit 2d4b1ad

Browse files
committed
feat!: introduce logger choice via slog
Historically brokerapi has required use of the [`lager`](https://github.com/cloudfoundry/lager) logger. In Go 1.21, structured logging was introduced into the Go standard library via the [`log/slog`](https://pkg.go.dev/log/slog) package, and `slog` [compatability was added](cloudfoundry/lager@4bf4955) to `lager`. `brokerapi` has been modified to require a `slog` logger to be passed rather than a `lager` logger. This allows users a choice of logger. Users who still want to use lager can easily do that using the lager/slog compatability: ```go logger := lager.NewLogger(name) brokerAPI := brokerapi.New(serviceBroker, slog.New(lager.NewHandler(logger)), credentials) ``` And users who want to use `slog` or an `slog`-compatible logger can do that instead. A key advantage is that `lager` is no longer a dependency of this package, which simplifies package management for apps that use brokerapi and other libraries which use `lager`.
1 parent 4b27d1c commit 2d4b1ad

27 files changed

+358
-301
lines changed

.github/workflows/run-tests.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ jobs:
1515
runs-on: ubuntu-latest
1616
strategy:
1717
matrix:
18-
version: [ 'stable', 'oldstable', '1.20' ]
18+
version: [ 'stable', 'oldstable', '1.21' ]
1919
name: Go ${{ matrix.version }}
2020
outputs:
2121
pr_number: ${{ github.event.number }}

api.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@
1616
package brokerapi
1717

1818
import (
19+
"log/slog"
1920
"net/http"
2021

21-
"code.cloudfoundry.org/lager/v3"
2222
"github.com/go-chi/chi/v5"
2323
"github.com/pivotal-cf/brokerapi/v10/handlers"
2424
)
@@ -28,19 +28,19 @@ type BrokerCredentials struct {
2828
Password string
2929
}
3030

31-
func New(serviceBroker ServiceBroker, logger lager.Logger, brokerCredentials BrokerCredentials) http.Handler {
31+
func New(serviceBroker ServiceBroker, logger *slog.Logger, brokerCredentials BrokerCredentials) http.Handler {
3232
return NewWithOptions(serviceBroker, logger, WithBrokerCredentials(brokerCredentials))
3333
}
3434

35-
func NewWithCustomAuth(serviceBroker ServiceBroker, logger lager.Logger, authMiddleware middlewareFunc) http.Handler {
35+
func NewWithCustomAuth(serviceBroker ServiceBroker, logger *slog.Logger, authMiddleware middlewareFunc) http.Handler {
3636
return NewWithOptions(serviceBroker, logger, WithCustomAuth(authMiddleware))
3737
}
3838

39-
func AttachRoutes(router chi.Router, serviceBroker ServiceBroker, logger lager.Logger) {
39+
func AttachRoutes(router chi.Router, serviceBroker ServiceBroker, logger *slog.Logger) {
4040
attachRoutes(router, serviceBroker, logger)
4141
}
4242

43-
func attachRoutes(router chi.Router, serviceBroker ServiceBroker, logger lager.Logger) {
43+
func attachRoutes(router chi.Router, serviceBroker ServiceBroker, logger *slog.Logger) {
4444
apiHandler := handlers.NewApiHandler(serviceBroker, logger)
4545
router.Get("/v2/catalog", apiHandler.Catalog)
4646

api_options.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@
1616
package brokerapi
1717

1818
import (
19+
"log/slog"
1920
"net/http"
2021

21-
"code.cloudfoundry.org/lager/v3"
2222
"github.com/go-chi/chi/v5"
2323
"github.com/pivotal-cf/brokerapi/v10/auth"
2424
"github.com/pivotal-cf/brokerapi/v10/domain"
@@ -27,7 +27,7 @@ import (
2727

2828
type middlewareFunc func(http.Handler) http.Handler
2929

30-
func NewWithOptions(serviceBroker domain.ServiceBroker, logger lager.Logger, opts ...Option) http.Handler {
30+
func NewWithOptions(serviceBroker domain.ServiceBroker, logger *slog.Logger, opts ...Option) http.Handler {
3131
cfg := newDefaultConfig(logger)
3232
WithOptions(append(opts, withDefaultMiddleware())...)(cfg)
3333
attachRoutes(cfg.router, serviceBroker, logger)
@@ -70,7 +70,7 @@ func WithEncodedPath() Option {
7070
func withDefaultMiddleware() Option {
7171
return func(c *config) {
7272
if !c.customRouter {
73-
c.router.Use(middlewares.APIVersionMiddleware{LoggerFactory: c.logger}.ValidateAPIVersionHdr)
73+
c.router.Use(middlewares.APIVersionMiddleware{Logger: c.logger}.ValidateAPIVersionHdr)
7474
c.router.Use(middlewares.AddCorrelationIDToContext)
7575
c.router.Use(middlewares.AddOriginatingIdentityToContext)
7676
c.router.Use(middlewares.AddInfoLocationToContext)
@@ -87,7 +87,7 @@ func WithOptions(opts ...Option) Option {
8787
}
8888
}
8989

90-
func newDefaultConfig(logger lager.Logger) *config {
90+
func newDefaultConfig(logger *slog.Logger) *config {
9191
return &config{
9292
router: chi.NewRouter(),
9393
customRouter: false,
@@ -98,5 +98,5 @@ func newDefaultConfig(logger lager.Logger) *config {
9898
type config struct {
9999
router chi.Router
100100
customRouter bool
101-
logger lager.Logger
101+
logger *slog.Logger
102102
}

0 commit comments

Comments
 (0)