TelemetryDecorator uses Decorator to wrap a function’s body with a :telemetry.span/3 call. I’ve found the results easier to read and maintain than when I make the call explicitly.
To use it, take the dependency and add a @decorate attribute before any function for which you want telemetry:
defmodule MyApp.MyModule do
use TelemetryDecorator
@decorate telemetry([:my_app, :succeed])
def succeed(arg1, arg2) do
:...
end
end
Your event metadata will contain:
- Any variables matched by your arguments for
:start,:stop, and:exceptionevents - Your function’s
resultfor:stopevents (overriding any variable namedresult) - Any other variables you name with the
includeoption
I also include TelemetryDecorator.watch/1 for convenient console watching of any telemetry following the :telemetry.span/3 conventions.






















