Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat!: introduce logger choice via slog (#292)
## Breaking Changes This package now accepts a `*slog.Logger` from the Go standard library, rather than a [Lager logger](https://github.com/cloudfoundry/lager). This allows the use of alternative loggers. - This package no longer requires you to import `code.cloudfoundry.org/lager/v3`. - The constructors `New()`, `NewWithCustomAuth()`, `NewWithOptions()`, and also `AttachRoutes()` all take a `*slog.Logger` - `apiresponses.FailureResponse` errors with a `ValidatedStatusCode()` method also take a `*slog.Logger` rather than a Lager logger - The middleware `middlewares.APIVersionMiddleware` has had the `LoggerFactory` field removed, and a new field `Logger` added with type `*slog.Logger`. If you want to continue to use Lager, you can just convert it to a `*slog.Logger`, for which you will need Lager [v3.0.3](https://github.com/cloudfoundry/lager/releases/tag/v3.0.3) for example: ```go logger := lager.NewLogger("a-lager-logger") router := brokerapi.New(serviceBroker, slog.New(lager.NewHandler(logger)), credentials) ``` ## Reasons 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. 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`. Resolves #267
- Loading branch information