Packages
timber
1.1.1
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/event.ex
defmodule Timber.Event do
@moduledoc """
A common interface for working with structures in the `Timber.Events` namespace.
"""
alias Timber.Events
@type t ::
Events.ControllerCallEvent |
Events.CustomEvent |
Events.ExceptionEvent |
Events.HTTPClientRequestEvent |
Events.HTTPClientResponseEvent |
Events.HTTPServerRequestEvent |
Events.HTTPServerResponseEvent |
Events.SQLQueryEvent |
Events.TemplateRenderEvent
@doc false
@spec to_api_map(t) :: map
def to_api_map(%Events.CustomEvent{type: type} = event) when is_binary(type) do
to_api_map(%{event | type: String.to_atom(type)})
end
def to_api_map(%Events.CustomEvent{type: type, data: data}) do
%{custom: %{type => data}}
end
def to_api_map(event) do
type = type(event)
%{server_side_app: %{type => Map.from_struct(event)}}
end
@doc """
Returns the official Timber type for this event. Used as the JSON map key when
sending to Timber.
"""
@spec type(t) :: atom()
def type(%Events.ControllerCallEvent{}), do: :controller_call
def type(%Events.CustomEvent{}), do: :custom
def type(%Events.ExceptionEvent{}), do: :exception
def type(%Events.HTTPClientRequestEvent{}), do: :http_client_request
def type(%Events.HTTPClientResponseEvent{}), do: :http_client_response
def type(%Events.HTTPServerRequestEvent{}), do: :http_server_request
def type(%Events.HTTPServerResponseEvent{}), do: :http_server_response
def type(%Events.SQLQueryEvent{}), do: :sql_query
def type(%Events.TemplateRenderEvent{}), do: :template_render
end