From b0fcfb800fae7920b17b2cdafdff2ba9033e64dc Mon Sep 17 00:00:00 2001 From: Graham McIntire Date: Thu, 5 Mar 2026 19:23:23 -0600 Subject: [PATCH] fix(logs): add Plug.Telemetry metadata filter to suppress health check logs The FilterNoisyLogs plug wasn't completely preventing logs in Phoenix 1.8. Added metadata_filter to Plug.Telemetry to explicitly skip logging for: - GET /health - GET /health/time - HEAD / This works at the Telemetry level before logs are emitted. --- lib/towerops_web/endpoint.ex | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/lib/towerops_web/endpoint.ex b/lib/towerops_web/endpoint.ex index 5d53b3a9..074deb32 100644 --- a/lib/towerops_web/endpoint.ex +++ b/lib/towerops_web/endpoint.ex @@ -55,7 +55,20 @@ defmodule ToweropsWeb.Endpoint do plug ToweropsWeb.Plugs.BruteForceProtection plug ToweropsWeb.Plugs.SecurityHeaders - plug Plug.Telemetry, event_prefix: [:phoenix, :endpoint] + plug Plug.Telemetry, + event_prefix: [:phoenix, :endpoint], + log: :info, + metadata_filter: &__MODULE__.telemetry_metadata_filter/1 + + # Filter function for Plug.Telemetry - don't log health checks and uptime monitors + def telemetry_metadata_filter(metadata) do + case metadata do + %{conn: %{method: "GET", path_info: ["health"]}} -> false + %{conn: %{method: "GET", path_info: ["health", "time"]}} -> false + %{conn: %{method: "HEAD", path_info: []}} -> false + _ -> metadata + end + end plug Plug.Parsers, parsers: [:urlencoded, :multipart, :json],