Skip to content

Commit 089c470

Browse files
committed
Only print metadata of known types, closes #9814
1 parent 68481b7 commit 089c470

File tree

3 files changed

+33
-29
lines changed

3 files changed

+33
-29
lines changed

lib/logger/lib/logger/formatter.ex

Lines changed: 30 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -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
219222
end

lib/logger/lib/logger/handler.ex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ defmodule Logger.Handler do
9090
:ok
9191

9292
{message, %{gl: gl} = metadata} ->
93+
timestamp = Map.get_lazy(metadata, :time, fn -> :os.system_time(:microsecond) end)
9394
metadata = erlang_metadata_to_elixir_metadata(metadata)
9495
%{truncate: truncate, utc_log: utc_log?} = config
9596

lib/logger/test/logger/formatter_test.exs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,9 @@ defmodule Logger.FormatterTest do
7777
"2014-12-30 12:06:30.100"
7878
end
7979

80-
test "format discards callers/ancestors/crash_reason" do
80+
test "format discards unknown formats" do
8181
compiled = compile("$metadata $message")
82-
metadata = [callers: :discard, ancestors: :discard, crash_reason: :discard, foo: :bar]
82+
metadata = [ancestors: [self()], crash_reason: {:some, :tuple}, foo: :bar]
8383

8484
assert format(compiled, :error, "hello", nil, metadata) ==
8585
[["foo", 61, "bar", 32], " ", "hello"]

0 commit comments

Comments
 (0)