Add client IP to request log metadata
Set Logger metadata from conn.remote_ip in the RemoteIp plug so request logs include the client address.
This commit is contained in:
parent
03e2cf3403
commit
cf97bf236a
3 changed files with 12 additions and 6 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue