I understand your reservations, though it’s often a matter of preference and the whole ecosystem in which you work. As much as I’m a fan of FP, I don’t think wrapping logging statements into the IO monad brings much benefit. On the contrary, it might hurt code readability. Same with trace ids — the signatures are often complicated enough.

There’s space for both approaches. Using ReaderT or MTL (as in https://gvolpe.github.io/http4s-tracer/) is tempting because of the simplicity of the underlying mechanisms.

I don’t mind however that my chosen effect monad does some extra work, esp if this is something as ubiquitous as request tracing.

--

--

Software engineer, Functional Programming and Scala enthusiast, SoftwareMill co-founder

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Adam Warski

Adam Warski

Software engineer, Functional Programming and Scala enthusiast, SoftwareMill co-founder