README.md

# Telemetría    [![Kantox ❤ OSS](https://img.shields.io/badge/❤-kantox_oss-informational.svg)](https://kantox.com/)  ![Test](https://github.com/am-kantox/telemetria/workflows/Test/badge.svg)  ![Dialyzer](https://github.com/am-kantox/telemetria/workflows/Dialyzer/badge.svg)

**The helper application that simplifies and standardizes telemetry usage.**

## Installation

```elixir
def project do
  [
    compilers: [:telemetria | Mix.compilers()]
  ]
end

def deps do
  [
    {:telemetria, "~> 0.1"}
  ]
end
```

## Changelog

- **`0.21.0`** —
  - [UPD] support for external messengers (slack)
- **`0.20.0`** —
  - [UPD] support for nested spans 
- **`0.19.1`** —
  - [UPD] `reshape/1` everywhere to make a result transformable
- **`0.19.0`** —
  - [UPD] `OpenTelemetry` support through backend abstraction
- **`0.18.0`** —
  - [UPD] `locals: [:foo, :bar]` to export local vars from functions
- **`0.17.0`** —
  - [UPD] Configurable throttling groups
- **`0.16.0`** —
  - [UPD] Elixir v1.17
- **`0.15.0`** —
  - [UPD] Elixir v1.16
- **`0.14.2`** —
  - [ENH] `process_info: boolean()` option to embed the process info into each telemtry event 
- **`0.14.1`** —
  - [ENH] Propagate `custom_options: [from: :telemetria]` down to inspect
- **`0.14.0`** —
  - [ENH] Allow `if: runtime_function` in `@telemetria` attribute in the form `&Mod.fun/1`,
    which will receive the result _and_ emit the telemetry event if it returns `true`
- **`0.13.0`** —
  - [ENH] Allow `if: compile_time_boolean` in `@telemetria` attribute
- **`0.12.0`** —
  - [ENH] Allow `[transform: [args: M.f/1, result: {M, :f}]]` coercers in `@telemetria` attribute
- **`0.11.1`** —
  - [ENH] diagnostics improved
- **`0.11.0`** —
  - [FIX] properly handle `@telemetria` attribute on function heads and multiple clauses
  - [ENH] purge level for telemetria hooks
  - [ENH] level for telemetria logs
- **`0.9.1`** —
  - [ENH] `@telemetria process_info: true` keyword parameter
  - [ENH] `@id` is set to the correct `otp_app`
  - [ENH] `MFA` is set properly for alerts
  - [ENH] arguments and result are grouped under `:call`
  - [ENH] total metadata cleanup
- **`0.9.0`** —
  - [ENH] add `Telemetria.Formatter` that can be used to produce JSON logs basing on metadata, natively integrated into `telemetría`
- **`0.8.0`** —
  - [ENH] add `applications` option accepting a keyword list of applications to enable `telemetria` for (with optional parameters)
- **`0.7.0`** —
  - [ENH] add named arguments in all calls to event’s context
- **`0.6.1`** —
  - [BUG] wrong order using telemetry with many clauses
- **`0.6.0`** —
  - [ENH] accept parameters in annotation `@telemetria`
  - [MIN] better print of events added
- **`0.5.2`** —
  - [ENH] `enabled: false` config to purge all telemetria code at once
- **`0.5.1`** —
  - [ENH] add result of underlying call to metric
  - [ENH] decrease an amount of garbage returned from caller context
- **`0.5.0`** —
  - [ENH] annotation `@telemetria true` as a synonym to `deft/2`
  - [FIX] polling is off by default
- **`0.4.0`** —
  - [ENH] default polling of system / vm states for free
  - [ENH] starting in phases ensuring proper instrumenter setup
- **`0.3.0`** —
  - [ENH] no need for any config in any environment
  - [BUG] proper handling of guards in compiler, correct event names

## [Documentation](https://hexdocs.pm/telemetria).