I have a logger metadata plug (MyAppWeb.Plug.LoggerMetadata) that requires the following 2 plugs to run first in order to add the
user_id to the metadata:
- plug(MyAppWeb.Auth.Pipeline) (which uses Guardian to fetch the
So I initially set up the endpoint.ex file to look like this:
.... plug(:fetch_session) plug MyAppWeb.Auth.Pipeline plug MyAppWeb.Plug.LoggerMetadata plug(Plug.Logger) plug(MyAppWeb.Router) ...
It feels weird to have
Auth.Pipeline in endpoint.ex as opposed to the router, though.
So I ended up moving those plugs back to the router.ex file like so:
... pipeline :logger do plug MyAppWeb.Plug.LoggerMetadata plug(Plug.Logger) end pipeline :support_authentication do plug(MyAppWeb.Auth.Pipeline) end pipeline :browser do plug(:accepts, ["html"]) plug(:fetch_session) plug(:support_authentication) plug(:logger) ... end ...
This also feels weird because now we have to explicitly call the logger with each new pipeline such as
I’m wondering if there are any drawbacks/gotchas with my first method or maybe if I’m missing some third option.