1defmodule Logger.Filter do 2 @moduledoc false 3 4 @doc """ 5 Filter messages logged via `Logger` module when not logging OTP reports. 6 """ 7 def filter_elixir_domain(%{meta: meta}, _extra) do 8 case meta do 9 %{domain: [:elixir | _]} -> :ignore 10 _ -> :stop 11 end 12 end 13 14 @doc """ 15 Filter out logs if current process opted out of log reports. 16 """ 17 def process_disabled(_log, _extra) do 18 if Logger.enabled?(self()) do 19 :ignore 20 else 21 :stop 22 end 23 end 24 25 @doc """ 26 A filter that waits until Logger exits and then removes itself. 27 """ 28 def silence_logger_exit( 29 %{ 30 msg: 31 {:report, 32 %{ 33 label: {:application_controller, :exit}, 34 report: [application: :logger, exited: :stopped] ++ _ 35 }} 36 }, 37 _extra 38 ) do 39 :stop 40 end 41 42 def silence_logger_exit(_message, _extra) do 43 :ignore 44 end 45end 46