View Source Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.



  • Added monotonic_time measurement to all span events. (#92)
  • Added a [telemetry, handler, failure] event emitted when any handler fails and is detached. (#98)
  • Added a mix.exs file, lowering the memory footprint of compilation in Elixir projects. (#103)


There are no changes in the 1.0.0 release - it marks the stability of the API.


This release improves the telemetry:span/3 function by adding the telemetry_span_context metadata to all span events. The new metadata enables correlating span events that belong to the same span.


  • Added telemetry_span_context metadata to all events emitted by telemetry:span/3.



  • Added the telemetry:span/3 function.


Apart from the code changes listed below, this release includes a few improvements to the documentation.


  • Calls to execute/3 when telemetry application is not started no longer cause an error.


A single event value has been replaced by a map of measurements. Now it is up to the consumer of the event to decide what part of the payload is important. This is useful in cases where event indicates that a thing happened but there are many properties describing it. For example, a database query event may include total time, decode time, wait time and other measurements.


  • execute/3 now accepts a map of measurements instead of event value


  • :telemetry.execute/3 with an event value in favour of :telemetry.execute/3 with a map of measurements. If the event value is provided, it is put in a map under a :value key and provided as measurements to a handler function.


This release marks the conversion from Elixir to Erlang. This is a breaking change, but the benefits largely surpass the drawbacks - Telemetry core can now be used by all projects running on the BEAM, regardless of the language they're written in.


  • Added :telemetry.handler/0, :telemetry.handler_function/0 and :telemetry.handler_config/0 types.


  • The library has been rewritten to Erlang. In Elixir, :telemetry module has to be used in place of Telemetry. In Erlang, telemetry module has to be used in place of 'Elixir.Telemetry';
  • :telemetry.list_handlers/1 returns a list of maps (of type :telemetry.handler/0) instead of a list of tuples;
  • :telemetry.attach/4 and :telemetry.attach_many/4 replaced the 5-arity versions and now accept an anonymous function for the handler function instead of a module and function name.


  • Removed :telemetry.attach/5 and :telemetry.attach_many/5 - 4-arity versions need to be used now instead.


The main point of this release is to mark base Telemetry API as stable, so that other libraries can rely on it without worrying about backwards compatibility.


  • Removed Telemetry.attach/4 and Telemetry.attach_many/4 - the handler config is now required.


  • Fixed type specs which were producing Dialyzer errors.


First release of Telemetry library.