summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMatthias Radestock <matthias@rabbitmq.com>2013-08-01 04:58:32 +0100
committerMatthias Radestock <matthias@rabbitmq.com>2013-08-01 04:58:32 +0100
commitb11b7b056212d4a018da11c0ac1a53ef840a7153 (patch)
tree121ae765f362285c4fd593ea922e1a6ae14d1f95 /src
parent2d30c6309f66a0467eba13e999bdf6e60cac68a6 (diff)
downloadrabbitmq-server-git-b11b7b056212d4a018da11c0ac1a53ef840a7153.tar.gz
add/remove log handler at precise point in system lifecycle
Previously the handler stuck around for too long in the event of failed startup, resulting in spurious errors.
Diffstat (limited to 'src')
-rw-r--r--src/rabbit.erl8
-rw-r--r--src/rabbit_error_logger.erl13
2 files changed, 16 insertions, 5 deletions
diff --git a/src/rabbit.erl b/src/rabbit.erl
index eae3b80296..3724c32e29 100644
--- a/src/rabbit.erl
+++ b/src/rabbit.erl
@@ -161,7 +161,12 @@
-rabbit_boot_step({log_relay,
[{description, "error log relay"},
- {mfa, {rabbit_error_logger, boot, []}},
+ {mfa, {rabbit_sup, start_child,
+ [rabbit_error_logger_lifecycle,
+ supervised_lifecycle,
+ [rabbit_error_logger_lifecycle,
+ {rabbit_error_logger, start, []},
+ {rabbit_error_logger, stop, []}]]}},
{requires, routing_ready},
{enables, networking}]}).
@@ -443,7 +448,6 @@ start(normal, []) ->
end.
stop(_State) ->
- terminated_ok = error_logger:delete_report_handler(rabbit_error_logger),
ok = rabbit_alarm:stop(),
ok = case rabbit_mnesia:is_clustered() of
true -> rabbit_amqqueue:on_node_down(node());
diff --git a/src/rabbit_error_logger.erl b/src/rabbit_error_logger.erl
index 184dcf1791..17ed8563eb 100644
--- a/src/rabbit_error_logger.erl
+++ b/src/rabbit_error_logger.erl
@@ -22,7 +22,7 @@
-behaviour(gen_event).
--export([boot/0]).
+-export([start/0, stop/0]).
-export([init/1, terminate/2, code_change/3, handle_call/2, handle_event/2,
handle_info/2]).
@@ -31,16 +31,23 @@
-ifdef(use_specs).
--spec(boot/0 :: () -> 'ok').
+-spec(start/0 :: () -> 'ok').
+-spec(stop/0 :: () -> 'ok').
-endif.
%%----------------------------------------------------------------------------
-boot() ->
+start() ->
{ok, DefaultVHost} = application:get_env(default_vhost),
ok = error_logger:add_report_handler(?MODULE, [DefaultVHost]).
+stop() ->
+ terminated_ok = error_logger:delete_report_handler(rabbit_error_logger),
+ ok.
+
+%%----------------------------------------------------------------------------
+
init([DefaultVHost]) ->
#exchange{} = rabbit_exchange:declare(
rabbit_misc:r(DefaultVHost, exchange, ?LOG_EXCH_NAME),