I'm sure this is a ridiculous question... I'm trying to enable tapir's logging as described here:
https://tapir.softwaremill.com/en/v0.19.0-m4/server/debugging.html
... but even having looked at the ServerOptions docs, I'm not getting anywhere. My naive assumption from the docs was that it should be something like:
import sttp.tapir.server.akkahttp.AkkaHttpServerOptions
import sttp.tapir.server.interceptor.log.DefaultServerLog
val customServerOptions: AkkaHttpServerOptions = AkkaHttpServerOptions.customInterceptors(
serverLog = DefaultServerLog(logWhenHandled=true, logAllDecodeFailures=true)
)
and then
AkkaHttpServerInterpreter(customServerOptions).toRoute(...)
However, this is clearly way off - DefaultServerLog is the wrong type, and would need masses of configuration.
The docs imply this can just be done by setting a few flags, what am I missing?
The
DefaultServerLogis the default implementation for theServerLogtrait, though it has a couple of fields without default values. These fields specify how to actually perform the logging:DefaultServerLog .doLogWhenHandledetc.What you need to do is to get an instance of
DefaultServerLog, which is configured to integrate with akka-http. This is available asAkkaHttpServerOptions.Log.defaultServerLog.Unfortunately, in 0.19 this was typed too narrowly, not allowing proper customisation. Hence, an ugly cast is needed (this is fixed in the current, stable 1.2 version):
As for the docs, you are right that they might be misleading (they haven't changed much since 0.19), I'll fix that shortly.