Skip to content

Commit b4d465e

Browse files
josevalimJosé Valim
authored andcommitted
Merge pull request #3018 from lexmag/logger-metadata-fix
Fix the logging with `metadata[:function]`
1 parent 9512751 commit b4d465e

File tree

2 files changed

+21
-4
lines changed

2 files changed

+21
-4
lines changed

lib/logger/lib/logger.ex

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -474,8 +474,8 @@ defmodule Logger do
474474
defp macro_log(level, chardata, metadata, caller) do
475475
min_level = Application.get_env(:logger, :compile_time_purge_level, :debug)
476476
if compare_levels(level, min_level) != :lt do
477-
%{module: module, function: function, line: line} = caller
478-
caller = [module: module, function: function, line: line]
477+
%{module: module, function: fun, line: line} = caller
478+
caller = [module: module, function: form_fa(fun), line: line]
479479
quote do
480480
Logger.log(unquote(level), unquote(chardata), unquote(caller) ++ unquote(metadata))
481481
end
@@ -491,6 +491,12 @@ defmodule Logger do
491491
defp truncate(data, n),
492492
do: Logger.Utils.truncate(to_string(data), n)
493493

494+
defp form_fa({name, arity}) do
495+
Atom.to_string(name) <> "/" <> Integer.to_string(arity)
496+
end
497+
498+
defp form_fa(nil), do: nil
499+
494500
defp notify(:sync, msg), do: GenEvent.sync_notify(Logger, msg)
495501
defp notify(:async, msg), do: GenEvent.notify(Logger, msg)
496502
end

lib/logger/test/logger/backends/console_test.exs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,19 @@ defmodule Logger.Backends.ConsoleTest do
4343
Logger.metadata(user_id: 13)
4444

4545
assert capture_log(fn ->
46-
Logger.debug("user_id=13 hello")
47-
end) =~ "hello"
46+
Logger.debug("hello")
47+
end) =~ "user_id=13 hello"
48+
end
49+
50+
test "metadata defaults" do
51+
Logger.configure_backend(:console,
52+
format: "$metadata", metadata: [:module, :function, :line])
53+
54+
%{module: mod, function: {name, arity}, line: line} = __ENV__
55+
56+
assert capture_log(fn ->
57+
Logger.debug("hello")
58+
end) =~ "module=#{mod} function=#{name}/#{arity} line=#{line + 3}"
4859
end
4960

5061
test "can configure level" do

0 commit comments

Comments
 (0)