Honeybadger.EventFilter.Mixin (Honeybadger v0.24.1)

View Source

Provides a mixin for implementing the Honeybadger.EventFilter behaviour.

If you need to implement custom filtering for events, you can define your own filter module and register it in the config. For example, to filter based on event_type:

defmodule MyApp.MyFilter do
  use Honeybadger.EventFilter.Mixin

  # Drop analytics events by returning nil
  def filter_event(%{event_type: "analytics"} = _event), do: nil

  # Anonymize user data in login events
  def filter_event(%{event_type: "login"} = event) do
    event
    |> update_in([:data, :user_email], fn _ -> "[REDACTED]" end)
    |> put_in([:metadata, :filtered], true)
  end

  # For telemetry events, you can customize while still applying default filtering
  def filter_telemetry_event(data, raw, event) do
    # First apply default filtering
    filtered_data = apply_default_telemetry_filtering(data)

    # Then apply custom logic
    case event do
      [:auth, :login, :start] ->
        Map.put(filtered_data, :security_filtered, true)
      _ ->
        filtered_data
    end
  end

  # Keep all other events as they are
  def filter_event(event), do: event
end

And set the configuration to:

config :honeybadger,
  event_filter: MyApp.MyFilter

Return nil from filter_event/1 to prevent the event from being processed. If you override filter_telemetry_event/3, you can still apply the default filtering by calling apply_default_telemetry_filtering/1.