Current section

Files

Jump to
commanded lib commanded telemetry.ex
Raw

lib/commanded/telemetry.ex

defmodule Commanded.Telemetry do
@moduledoc false
def start(event_prefix, metadata \\ %{}, additional_measurements \\ %{}) do
start_time = System.monotonic_time()
measurements = Map.put(additional_measurements, :system_time, System.system_time())
:telemetry.execute(event_prefix ++ [:start], measurements, metadata)
start_time
end
def stop(event_prefix, start_time, metadata \\ %{}, additional_measurements \\ %{}) do
measurements = include_duration(start_time, additional_measurements)
:telemetry.execute(event_prefix ++ [:stop], measurements, metadata)
end
def exception(
event_prefix,
start_time,
kind,
reason,
stacktrace,
metadata \\ %{},
additional_measurements \\ %{}
) do
measurements = include_duration(start_time, additional_measurements)
metadata = Map.merge(metadata, %{kind: kind, reason: reason, stacktrace: stacktrace})
:telemetry.execute(event_prefix ++ [:exception], measurements, metadata)
end
defp include_duration(start_time, measurements) do
end_time = System.monotonic_time()
Map.put(measurements, :duration, end_time - start_time)
end
end