Fix compatibility with Loggers in Elixir 1.15+

This commit is contained in:
Haelwenn (lanodan) Monnier 2023-12-24 10:45:29 +01:00 committed by Mark Felder
commit c389ea0f42
7 changed files with 44 additions and 18 deletions

View file

@ -1,5 +1,5 @@
# Pleroma: A lightweight social networking server
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
# Copyright © 2017-2023 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only
defmodule Pleroma.Config.TransferTask do
@ -13,6 +13,13 @@ defmodule Pleroma.Config.TransferTask do
@type env() :: :test | :benchmark | :dev | :prod
@add_backend if Version.match?(System.version(), "< 1.15.0-rc.0"),
do: &Logger.add_backend/1,
else: &LoggerBackends.add/1
@remove_backend if Version.match?(System.version(), "< 1.15.0-rc.0"),
do: &Logger.remove_backend/1,
else: &LoggerBackends.remove/1
defp reboot_time_keys,
do: [
{:pleroma, :hackney_pools},
@ -105,26 +112,30 @@ defmodule Pleroma.Config.TransferTask do
# change logger configuration in runtime, without restart
defp configure({_, :backends, _, merged}) do
# removing current backends
Enum.each(Application.get_env(:logger, :backends), &Logger.remove_backend/1)
Enum.each(Application.get_env(:logger, :backends), @remove_backend)
Enum.each(merged, &Logger.add_backend/1)
Enum.each(merged, @add_backend)
:ok = update_env(:logger, :backends, merged)
end
defp configure({_, key, _, merged}) when key in [:console, :ex_syslogger] do
defp configure({_, key, _, merged})
when key in [:console, Logger.Backends.Console, :ex_syslogger] do
backend =
case key do
:ex_syslogger -> {ExSyslogger, :ex_syslogger}
:console -> Logger.Backends.Console
Logger.Backends.Console -> Logger.Backends.Console
key -> key
end
merged =
if key == :console do
if backend == Logger.Backends.Console do
put_in(merged[:format], merged[:format] <> "\n")
else
merged
end
backend =
if key == :ex_syslogger,
do: {ExSyslogger, :ex_syslogger},
else: key
Logger.configure_backend(backend, merged)
:ok = update_env(:logger, key, merged)
end