Current section
Files
Jump to
Current section
Files
lib/telemetry.ex
defmodule SpandexTesla.Telemetry do
@moduledoc """
Defines the `:telemetry` handlers to attach tracing to Tesla Telemetry.
"""
@doc """
Automatic installer. Call it from application.ex to trace all events generated by Tesla.
"""
def attach do
if new_telemetry_events_supported?() do
tesla_events = [
[:tesla, :request, :start],
[:tesla, :request, :stop],
[:tesla, :request, :exception]
]
:telemetry.attach_many(__MODULE__, tesla_events, &SpandexTesla.handle_event/4, nil)
else
:telemetry.attach(__MODULE__, [:tesla, :request], &SpandexTesla.handle_event/4, nil)
end
end
defp new_telemetry_events_supported? do
case :application.get_key(:tesla, :vsn) do
{:ok, version} ->
version
|> List.to_string()
|> Version.match?(">= 1.3.3")
_ ->
false
end
end
end