Skip to content

Commit b378a2d

Browse files
committed
Ensure translators are persisted across logger restarts
1 parent ce922c2 commit b378a2d

File tree

2 files changed

+6
-1
lines changed

2 files changed

+6
-1
lines changed

lib/logger/lib/logger.ex

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -878,9 +878,12 @@ defmodule Logger do
878878

879879
defp update_translators(updater) do
880880
:elixir_config.serial(fn ->
881+
translators = updater.(Application.fetch_env!(:logger, :translators))
882+
Application.put_env(:logger, :translators, translators)
883+
881884
with %{filters: filters} <- :logger.get_primary_config(),
882885
{{_, {fun, config}}, filters} <- List.keytake(filters, :logger_translator, 0) do
883-
config = update_in(config.translators, updater)
886+
config = %{config | translators: translators}
884887
:ok = :logger.set_primary_config(:filters, filters ++ [logger_translator: {fun, config}])
885888
end
886889
end)

lib/logger/test/logger/backends/handler_test.exs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,9 @@ defmodule Logger.Backends.HandlerTest do
5858
end
5959

6060
test "add_translator/1 and remove_translator/1 for logger formats" do
61+
refute {CustomTranslator, :t} in Application.fetch_env!(:logger, :translators)
6162
assert Logger.add_translator({CustomTranslator, :t})
63+
assert {CustomTranslator, :t} in Application.fetch_env!(:logger, :translators)
6264

6365
assert capture_log(fn ->
6466
:logger.info(~c"hello: ~p", [:ok])

0 commit comments

Comments
 (0)