Packages
timber
2.5.4
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.
The defined structure of this data can be found in the log event JSON schema:
https://github.com/timberio/log-event-json-schema
"""
@type t :: %__MODULE__{
action: String.t,
controller: String.t,
params_json: String.t | nil,
pipelines: String.t | nil
}
@enforce_keys [:action, :controller]
defstruct [
:action,
:controller,
:params_json,
:pipelines
]
@params_json_max_bytes 8_192
@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_to_iodata!()
|> Timber.Utils.Logger.truncate_bytes(@params_json_max_bytes)
|> to_string()
else
nil
end
new_opts =
opts
|> Keyword.delete(:params)
|> Keyword.put(:params_json, params_json)
struct!(__MODULE__, new_opts)
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
end