defmodule Instruments.StatsReporter.Logger do @moduledoc """ A StatsReporter that logs to the `Logger` module. """ @behaviour Instruments.StatsReporter require Logger @doc false def connect(), do: :ok @doc false def increment(key, value \\ 1, _options \\ []) do Logger.info("incrementing #{key} by #{value}") end @doc false def decrement(key, value \\ 1, _options \\ []) do Logger.info("decrementing #{key} by #{value}") end @doc false def gauge(key, value, _options \\ []) do Logger.info("Setting gauge #{key} to #{value}") end @doc false def histogram(key, value, _options \\ []) do Logger.info("Adding #{value} to #{key} histogram") end @doc false def timing(key, value, _options \\ []) do Logger.info("#{key} took #{value}ms") end @doc false def measure(key, _options \\ [], fun) do {time_in_us, result} = :timer.tc(fun) Logger.info("#{key} took #{time_in_us / 1000}ms") result end @doc false def set(key, value, _options \\ []) do Logger.info("setting #{key} to #{value}") end end