Packages
plug
0.13.1
1.20.3
1.20.2
1.20.1
retired
1.20.0
retired
1.19.5
1.19.4
1.19.3
1.19.2
1.19.1
1.19.0
1.18.5
1.18.4
1.18.3
1.18.2
1.18.1
1.18.0
1.17.4
1.17.3
1.17.2
1.17.1
1.17.0
1.16.6
1.16.5
1.16.4
1.16.3
1.16.2
1.16.1
1.16.0
1.15.6
1.15.5
1.15.4
1.15.3
1.15.2
1.15.1
1.15.0
1.14.2
1.14.1
1.14.0
1.13.6
1.13.5
1.13.4
1.13.3
1.13.2
1.13.1
retired
1.13.0
retired
1.12.1
1.12.0
1.11.1
1.11.0
1.10.4
1.10.3
1.10.2
1.10.1
1.10.0
1.9.0
1.8.3
1.8.2
1.8.1
1.8.0
1.7.2
1.7.1
1.7.0
1.6.4
1.6.3
1.6.2
1.6.1
1.6.0
1.5.1
1.5.0
1.5.0-rc.2
1.5.0-rc.1
1.5.0-rc.0
1.4.5
1.4.4
1.4.3
1.4.2
1.4.1
1.4.0
1.4.0-rc.0
1.3.6
1.3.5
1.3.4
1.3.3
1.3.2
1.3.1
1.3.0
1.2.6
1.2.5
1.2.4
1.2.3
1.2.2
1.2.1
1.2.0
1.2.0-rc.0
1.1.9
1.1.8
1.1.7
1.1.6
1.1.5
1.1.4
1.1.3
1.1.2
1.1.1
1.1.0
1.0.6
1.0.5
1.0.4
1.0.3
1.0.2
1.0.1
1.0.0
0.14.0
0.13.1
0.13.0
0.12.2
0.12.1
0.12.0
0.11.3
0.11.2
0.11.1
0.11.0
0.10.0
0.9.0
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.0
0.6.0
0.5.3
0.5.2
0.5.1
0.5.0
0.4.4
0.4.3
0.4.2
0.4.1
Compose web applications with functions
Security advisory:
This version has known vulnerabilities.
View advisories
Current section
Files
Jump to
Current section
Files
lib/plug/adapters/translator.ex
defmodule Plug.Adapters.Translator do
@moduledoc """
A translator module shared by adapters that ship with Plug.
We host all translations in a single module which is added
to Logger when the :plug application starts.
"""
## Entry point
@doc """
The `translate/4` function expected by custom Logger translators.
"""
def translate(min_level, :error, :format,
{'Ranch listener' ++ _, [ref, protocol, pid, reason]}) do
{:ok, translate_ranch(min_level, ref, protocol, pid, reason)}
end
def translate(_min_level, _level, _kind, _data) do
:none
end
## Ranch/Cowboy
defp translate_ranch(min_level, _ref, :cowboy_protocol, pid,
{reason, {mod, :call, [%Plug.Conn{} = conn, _opts]}}) do
[inspect(pid), " running ", inspect(mod), " terminated\n",
conn_info(min_level, conn) |
Exception.format(:exit, reason, [])]
end
defp translate_ranch(_min_level, ref, protocol, pid, reason) do
["Ranch protocol ", inspect(pid), " (", inspect(protocol),
") of listener ", inspect(ref), " terminated\n" |
Exception.format(:exit, reason, [])]
end
## Helpers
defp conn_info(_min_level, conn) do
[server_info(conn), request_info(conn)]
end
defp server_info(%Plug.Conn{host: host, port: port, scheme: scheme}) do
["Server: ", host, ":", Integer.to_string(port), ?\s, ?(, Atom.to_string(scheme), ?), ?\n]
end
defp request_info(%Plug.Conn{method: method, query_string: query_string} = conn) do
["Request: ", method, ?\s, path_to_iodata(conn, query_string), ?\n]
end
defp path_to_iodata(path, ""), do: Plug.Conn.full_path(path)
defp path_to_iodata(path, qs), do: [Plug.Conn.full_path(path), ??, qs]
end