@@ -168,22 +168,42 @@ defmodule Logger.Formatter do
168168 defp levelpad ( :warn ) , do: " "
169169 defp levelpad ( :error ) , do: ""
170170
171- defp metadata ( [ { :report_cb , _ } | metadata ] ) , do: metadata ( metadata )
172- defp metadata ( [ { :time , _ } | metadata ] ) , do: metadata ( metadata )
173- defp metadata ( [ { :gl , _ } | metadata ] ) , do: metadata ( metadata )
174- defp metadata ( [ { :crash_reason , _ } | metadata ] ) , do: metadata ( metadata )
175- defp metadata ( [ { :ancestors , _ } | metadata ] ) , do: metadata ( metadata )
176- defp metadata ( [ { :callers , _ } | metadata ] ) , do: metadata ( metadata )
177- defp metadata ( [ { _ , nil } | metadata ] ) , do: metadata ( metadata )
178-
179171 defp metadata ( [ { key , value } | metadata ] ) do
180- [ to_string ( key ) , ?= , metadata ( key , value ) , ?\s | metadata ( metadata ) ]
172+ if formatted = metadata ( key , value ) do
173+ [ to_string ( key ) , ?= , formatted , ?\s | metadata ( metadata ) ]
174+ else
175+ metadata ( metadata )
176+ end
181177 end
182178
183179 defp metadata ( [ ] ) do
184180 [ ]
185181 end
186182
183+ defp metadata ( :time , _ ) , do: nil
184+ defp metadata ( :gl , _ ) , do: nil
185+
186+ defp metadata ( _ , nil ) , do: nil
187+ defp metadata ( _ , string ) when is_binary ( string ) , do: string
188+ defp metadata ( _ , integer ) when is_integer ( integer ) , do: Integer . to_string ( integer )
189+ defp metadata ( _ , float ) when is_float ( float ) , do: Float . to_string ( float )
190+ defp metadata ( _ , pid ) when is_pid ( pid ) , do: :erlang . pid_to_list ( pid )
191+
192+ defp metadata ( _ , atom ) when is_atom ( atom ) do
193+ case Atom . to_string ( atom ) do
194+ "Elixir." <> rest -> rest
195+ "nil" -> ""
196+ binary -> binary
197+ end
198+ end
199+
200+ defp metadata ( _ , ref ) when is_reference ( ref ) do
201+ '#Ref' ++ rest = :erlang . ref_to_list ( ref )
202+ rest
203+ end
204+
205+ defp metadata ( :file , file ) when is_list ( file ) , do: file
206+
187207 defp metadata ( :domain , [ head | tail ] ) when is_atom ( head ) do
188208 Enum . map_intersperse ( [ head | tail ] , ?. , & Atom . to_string / 1 )
189209 end
@@ -198,22 +218,5 @@ defmodule Logger.Formatter do
198218 Exception . format_mfa ( mod , fun , arity )
199219 end
200220
201- defp metadata ( _ , pid ) when is_pid ( pid ) do
202- :erlang . pid_to_list ( pid )
203- end
204-
205- defp metadata ( _ , ref ) when is_reference ( ref ) do
206- '#Ref' ++ rest = :erlang . ref_to_list ( ref )
207- rest
208- end
209-
210- defp metadata ( _ , atom ) when is_atom ( atom ) do
211- case Atom . to_string ( atom ) do
212- "Elixir." <> rest -> rest
213- "nil" -> ""
214- binary -> binary
215- end
216- end
217-
218- defp metadata ( _ , other ) , do: to_string ( other )
221+ defp metadata ( _ , _ ) , do: nil
219222end
0 commit comments