File 0012-lager_app-add-workaround-for-starting-error_logger.patch of Package lager
From d6849a50a222f0850d7cd6d81be38de0ad5e0e90 Mon Sep 17 00:00:00 2001
From: Led <ledest@gmail.com>
Date: Wed, 2 Jan 2019 02:52:26 +0200
Subject: [PATCH 2/2] lager_app: add workaround for starting error_logger
---
rebar.config | 2 +-
src/lager_app.erl | 47 +++++++++++++++++++++++++++--------------------
2 files changed, 28 insertions(+), 21 deletions(-)
diff --git a/rebar.config b/rebar.config
index 7441482..2a21c0f 100644
--- a/rebar.config
+++ b/rebar.config
@@ -55,4 +55,4 @@
{xref_queries, [{"(XC - UC) || (XU - X - B - lager_default_tracer : Mod - erlang:\"(is_map|map_size)\"/1 - maps:to_list/1)", []}]}.
{cover_enabled, true}.
-{edoc_opts, [{stylesheet_file, "./priv/edoc.css"}]}.
+{edoc_opts, [{preprocess, true}, {stylesheet_file, "./priv/edoc.css"}]}.
diff --git a/src/lager_app.erl b/src/lager_app.erl
index 70eef45..3e331b9 100644
--- a/src/lager_app.erl
+++ b/src/lager_app.erl
@@ -158,6 +158,21 @@ start_error_logger_handler(true, HWM, WhiteList) ->
throw({error, bad_config})
end,
+ _ = start_error_logger_handler(),
+
+ %% capture which handlers we removed from error_logger so we can restore them when lager stops
+ OldHandlers = case supervisor:start_child(lager_handler_watcher_sup, [error_logger, error_logger_lager_h, [HWM, GlStrategy]]) of
+ {ok, _} ->
+ [begin error_logger:delete_report_handler(X), X end ||
+ X <- gen_event:which_handlers(error_logger) -- [error_logger_lager_h | WhiteList]];
+ {error, _} ->
+ []
+ end,
+ OldHandlers.
+
+-ifdef(OTP_RELEASE).
+-if (?OTP_RELEASE >= 21).
+start_error_logger_handler() ->
case whereis(error_logger) of
undefined ->
%% On OTP 21 and above, error_logger is deprecated in favor of 'logger'
@@ -172,30 +187,22 @@ start_error_logger_handler(true, HWM, WhiteList) ->
ok = maybe_remove_logger_handler();
_ ->
ok
- end,
-
- %% capture which handlers we removed from error_logger so we can restore them when lager stops
- OldHandlers = case supervisor:start_child(lager_handler_watcher_sup, [error_logger, error_logger_lager_h, [HWM, GlStrategy]]) of
- {ok, _} ->
- [begin error_logger:delete_report_handler(X), X end ||
- X <- gen_event:which_handlers(error_logger) -- [error_logger_lager_h | WhiteList]];
- {error, _} ->
- []
- end,
- OldHandlers.
+ end.
%% On OTP 21.1 and higher we need to remove the `default' handler.
-%% But it might not exist, so we will wrap this in a try-catch
-%% block
maybe_remove_logger_handler() ->
- try
- ok = logger:remove_handler(default)
- catch
- error:undef -> ok;
- Err:Reason ->
- error_logger:error_msg("calling logger:remove_handler(default) failed: ~p ~p",
- [Err, Reason])
+ case logger:remove_handler(default) of
+ ok ->
+ ok;
+ {error, Reason} ->
+ error_logger:error_msg("calling logger:remove_handler(default) failed: error ~p", [Reason])
end.
+-else.
+start_error_logger_handler() -> ok.
+-endif.
+-else.
+start_error_logger_handler() -> ok.
+-endif.
configure_sink(Sink, SinkDef) ->
lager_config:new_sink(Sink),
--
2.16.4