Packages
timber
2.0.0-rc7
3.1.2
3.1.1
3.1.0
3.0.0
3.0.0-alpha.3
3.0.0-alpha.2
3.0.0-alpha.1
2.8.4
2.8.3
2.8.2
2.8.1
2.8.0
2.7.0
2.6.1
2.6.0
2.5.6
2.5.5
2.5.4
2.5.3
2.5.2
2.5.1
2.5.0
2.4.5
2.4.4
2.4.3
2.4.2
2.4.1
2.4.0
2.3.4
2.3.3
2.3.1
2.3.0
2.2.1
2.2.0
2.1.8
2.1.7
2.1.6
2.1.5
2.1.4
2.1.3
2.1.2
2.1.1
2.1.0
2.0.2
2.0.1
2.0.0
2.0.0-rc7
2.0.0-rc6
2.0.0-rc5
2.0.0-rc4
2.0.0-rc3
2.0.0-rc2
2.0.0-rc1
1.1.18
1.1.17
1.1.16
1.1.15
1.1.14
1.1.13
1.1.12
1.1.11
1.1.10
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.16
1.0.15
1.0.14
1.0.13
1.0.12
1.0.11
1.0.10
1.0.9
1.0.8
1.0.7
1.0.6
1.0.5
1.0.4
1.0.3
1.0.2
1.0.1
1.0.0
0.4.7
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.2
0.3.1
0.3.0
0.2.3
0.2.2
0.2.1
0.2.0
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
🌲 Great Elixir Logging Made Easy. Official Timber.io Integration.
Current section
Files
Jump to
Current section
Files
lib/timber/events/controller_call_event.ex
defmodule Timber.Events.ControllerCallEvent do
@moduledoc """
The `ControllerCallEvent` represents a controller being called during the HTTP request
cycle.
"""
@type t :: %__MODULE__{
action: String.t,
controller: String.t,
params_json: String.t | nil,
}
@enforce_keys [:action, :controller]
defstruct [
:action,
:controller,
:params_json,
:pipelines
]
@params_json_limit 5_000
@doc """
Builds a new struct taking care to:
* Converts `:params` to `:params_json` that satifies the Timber API requirements
"""
@spec new(Keyword.t) :: t
def new(opts) do
params = Keyword.get(opts, :params)
params_json =
if params && params != %{} do
params
|> Timber.Utils.JSON.encode!()
|> Timber.Utils.Logger.truncate(@params_json_limit)
else
nil
end
%__MODULE__{
action: Keyword.get(opts, :action),
controller: Keyword.get(opts, :controller),
params_json: params_json,
pipelines: Keyword.get(opts, :pipelines)
}
end
@doc """
Message to be used when logging.
"""
@spec message(t) :: IO.chardata
def message(%__MODULE__{action: action, controller: controller, pipelines: pipelines}) do
["Processing with ", controller, ?., action, ?/, ?2, " Pipelines: ", inspect(pipelines)]
end
@doc """
Converts the struct into a map that the Timber API expects. This is the data
that is sent to the Timber API.
"""
@spec to_api_map(t) :: map
def to_api_map(%__MODULE__{action: action, controller: controller, params_json: params_json}) do
%{action: action, controller: controller, params_json: params_json}
end
end