README.md

# TelemetryWrappers
![Hex.pm](https://img.shields.io/hexpm/v/telemetry_wrappers.svg)
[![Build Status](https://travis-ci.org/haljin/telemetry_wrappers.svg?branch=master)](https://travis-ci.org/haljin/telemetry_wrappers)

Simple wrapper functions for Telemetry to make taking some metrics a bit easier.

## Function timing

 With Telemetry wrappers you can define a function that will have its execution time measured and sent as a `:telemetry` event. To use the wrappers simply include `use TelemetryWrappers` in your module

 You can then define a function using `deftimed` macro:

  ```elixir
      deftimed timed_function(a, b), [:a, :b] do
        a + b
      end
  ```

  This will define a `timed_function/2` function like you would expect from `def` but it will also emit a `:telemetry` event `[:a, :b]` with the contents `%{call: timing}` where `timing` is the time the function took to execute in microseconds.

  The metric name is optional and will default to `[:timing, name]` where `name` is the name of the function (without arity).

  If you would like to define a private function you can instead use `deftimedp`

  ```elixir
      deftimedp timed_priv_function(a, b), [:a, :b] do
        a + b
      end
  ```