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(:fetch_session)
- plug(MyAppWeb.Auth.Pipeline) (which uses Guardian to fetch the
user_id)
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 fetch_session and 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 api, ajax, etc.
I’m wondering if there are any drawbacks/gotchas with my first method or maybe if I’m missing some third option.






















