From ee6247c00126ac3c73152c78e48407eb7511e527 Mon Sep 17 00:00:00 2001 From: Steve Cohen Date: Thu, 7 Aug 2025 10:38:47 -0700 Subject: [PATCH 1/2] chore: Silence spammy log messages For a while now, elixir_sense has been emitting lots of log messages that spammed our logs and made it harder to see what was going on. This PR removes the spam. Now, we remove any log message that has "is already compiled." in it, which handles all of the messages caused by elixir_sense. --- apps/engine/lib/engine/engine/bootstrap.ex | 2 ++ apps/expert/lib/expert/application.ex | 3 ++ apps/forge/lib/forge/log_filter.ex | 42 ++++++++++++++++++++++ 3 files changed, 47 insertions(+) create mode 100644 apps/forge/lib/forge/log_filter.ex diff --git a/apps/engine/lib/engine/engine/bootstrap.ex b/apps/engine/lib/engine/engine/bootstrap.ex index bd005ca6..4d98522d 100644 --- a/apps/engine/lib/engine/engine/bootstrap.ex +++ b/apps/engine/lib/engine/engine/bootstrap.ex @@ -6,6 +6,7 @@ defmodule Engine.Bootstrap do the project's code paths, which are then added to the code paths from the language server. At this point, it's safe to start the project, as we should have all the code present to compile the system. """ + alias Forge.LogFilter alias Forge.Project require Logger @@ -66,6 +67,7 @@ defmodule Engine.Bootstrap do } :logger.add_handler(handler_name, :logger_std_h, config) + LogFilter.hook_into_logger(handler_name) end defp maybe_change_directory(%Project{} = project) do diff --git a/apps/expert/lib/expert/application.ex b/apps/expert/lib/expert/application.ex index 1cb44732..94f639dc 100644 --- a/apps/expert/lib/expert/application.ex +++ b/apps/expert/lib/expert/application.ex @@ -4,6 +4,7 @@ defmodule Expert.Application do @moduledoc false alias Forge.Document + alias Forge.LogFilter use Application @@ -26,6 +27,8 @@ defmodule Expert.Application do assigns: Expert.Assigns} ] + LogFilter.hook_into_logger() + opts = [strategy: :one_for_one, name: Expert.Supervisor] Supervisor.start_link(children, opts) end diff --git a/apps/forge/lib/forge/log_filter.ex b/apps/forge/lib/forge/log_filter.ex new file mode 100644 index 00000000..1ad75b57 --- /dev/null +++ b/apps/forge/lib/forge/log_filter.ex @@ -0,0 +1,42 @@ +defmodule Forge.LogFilter do + def hook_into_logger() do + :logger.add_primary_filter(:ignore_module_warnings, {&reject_module_warnings/2, []}) + end + + def reject_module_warnings(log_event, _) do + case log_event do + %{msg: {:report, _}} -> + :ignore + + %{msg: {:string, message}} -> + message + |> ensure_binary() + |> action() + + %{msg: {format_string, format_data}} -> + format_string + |> :io.format(format_data) + |> ensure_binary() + |> action() + + _ -> + :ignore + end + end + + defp action(message) do + if message =~ "is already compiled." do + :stop + else + :ignore + end + end + + defp ensure_binary(charlist) when is_list(charlist) do + List.to_string(charlist) + end + + defp ensure_binary(s) when is_binary(s) do + s + end +end From 8ee8f226f0804ecaca9e0f3e65d0580e442dfbd9 Mon Sep 17 00:00:00 2001 From: Dorgan Date: Thu, 7 Aug 2025 16:35:23 -0300 Subject: [PATCH 2/2] fix: remove unused argument --- apps/engine/lib/engine/engine/bootstrap.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/engine/lib/engine/engine/bootstrap.ex b/apps/engine/lib/engine/engine/bootstrap.ex index 4d98522d..06a685a8 100644 --- a/apps/engine/lib/engine/engine/bootstrap.ex +++ b/apps/engine/lib/engine/engine/bootstrap.ex @@ -67,7 +67,7 @@ defmodule Engine.Bootstrap do } :logger.add_handler(handler_name, :logger_std_h, config) - LogFilter.hook_into_logger(handler_name) + LogFilter.hook_into_logger() end defp maybe_change_directory(%Project{} = project) do