diff --git a/config/config.exs b/config/config.exs index 05b08c5..e387446 100644 --- a/config/config.exs +++ b/config/config.exs @@ -131,7 +131,7 @@ config :esbuild, # Configures Elixir's Logger config :logger, :console, format: "$time $metadata[$level] $message\n", - metadata: [:request_id, :remote_ip] + metadata: [:request_id, :remote_ip, :user_agent] # Use Jason for JSON parsing in Phoenix config :phoenix, :json_library, Jason diff --git a/config/dev.exs b/config/dev.exs index 9dcda12..55dc060 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] $metadata$message\n", metadata: [:remote_ip] +config :logger, :console, format: "[$level] $metadata$message\n", metadata: [:remote_ip, :user_agent] # 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 41cada2..11be516 100644 --- a/lib/aprsme_web/plugs/remote_ip.ex +++ b/lib/aprsme_web/plugs/remote_ip.ex @@ -22,7 +22,17 @@ defmodule AprsmeWeb.Plugs.RemoteIp do :error -> conn end - Logger.metadata(remote_ip: conn.remote_ip |> :inet.ntoa() |> to_string()) + user_agent = + case get_req_header(conn, "user-agent") do + [ua | _] -> ua + [] -> "-" + end + + Logger.metadata( + remote_ip: conn.remote_ip |> :inet.ntoa() |> to_string(), + user_agent: user_agent + ) + conn end