diff --git a/config/config.exs b/config/config.exs index 8376ab9..c90ad32 100644 --- a/config/config.exs +++ b/config/config.exs @@ -126,7 +126,7 @@ config :esbuild, # Configures Elixir's Logger config :logger, :console, format: "$time $metadata[$level] $message\n", - metadata: [:request_id] + metadata: [:request_id, :remote_ip] # Use Jason for JSON parsing in Phoenix config :phoenix, :json_library, Jason diff --git a/config/dev.exs b/config/dev.exs index 8d1cc71..9dcda12 100644 --- a/config/dev.exs +++ b/config/dev.exs @@ -85,7 +85,7 @@ config :hammer, # The `http:` config above can be replaced with: # # https: [ -config :logger, :console, format: "[$level] $message\n" +config :logger, :console, format: "[$level] $metadata$message\n", metadata: [:remote_ip] # Initialize plugs at runtime for faster development compilation # port: 4001, diff --git a/lib/aprsme_web/plugs/remote_ip.ex b/lib/aprsme_web/plugs/remote_ip.ex index 252bf67..60a8ee2 100644 --- a/lib/aprsme_web/plugs/remote_ip.ex +++ b/lib/aprsme_web/plugs/remote_ip.ex @@ -11,15 +11,21 @@ defmodule AprsmeWeb.Plugs.RemoteIp do import Plug.Conn + require Logger + @impl true def init(opts), do: opts @impl true def call(conn, _opts) do - case get_client_ip(conn) do - {:ok, ip} -> %{conn | remote_ip: ip} - :error -> conn - end + conn = + case get_client_ip(conn) do + {:ok, ip} -> %{conn | remote_ip: ip} + :error -> conn + end + + Logger.metadata(remote_ip: conn.remote_ip |> :inet.ntoa() |> to_string()) + conn end defp get_client_ip(conn) do