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

openSUSE Build Service is sponsored by