diff options
| author | Hubert Plociniczak <hubert@lshift.net> | 2008-08-19 15:26:11 +0100 |
|---|---|---|
| committer | Hubert Plociniczak <hubert@lshift.net> | 2008-08-19 15:26:11 +0100 |
| commit | f68deec1639ff31ee8ceac62bcb0093f99b276a6 (patch) | |
| tree | 1b4d033391836ac0be0e6ae730b14688884ffb74 /src | |
| parent | ad27fd9268b0efb0674e71b2d99cbc12cbcb162f (diff) | |
| parent | d6a2ba61a838b604fad47286afa097d136095635 (diff) | |
| download | rabbitmq-server-git-f68deec1639ff31ee8ceac62bcb0093f99b276a6.tar.gz | |
Merge bug19200 into bug19193
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit.erl | 66 | ||||
| -rw-r--r-- | src/rabbit_control.erl | 13 |
2 files changed, 55 insertions, 24 deletions
diff --git a/src/rabbit.erl b/src/rabbit.erl index 69f72bfd55..3de403789b 100644 --- a/src/rabbit.erl +++ b/src/rabbit.erl @@ -27,7 +27,7 @@ -behaviour(application). --export([start/0, stop/0, stop_and_halt/0, status/0, reopen_logs/0]). +-export([start/0, stop/0, stop_and_halt/0, status/0, reopen_logs/0, reopen_logs/1]). -export([start/2, stop/1]). @@ -39,6 +39,7 @@ -include("rabbit_framing.hrl"). -include("rabbit.hrl"). +-include_lib("kernel/include/file.hrl"). -define(APPS, [os_mon, mnesia, rabbit]). @@ -50,6 +51,7 @@ -spec(stop/0 :: () -> 'ok'). -spec(stop_and_halt/0 :: () -> 'ok'). -spec(reopen_logs/0 :: () -> 'ok'). +-spec(reopen_logs/1 :: name() -> 'ok' | {'error', 'cannot_append_logfile'}). -spec(status/0 :: () -> [{running_applications, [{atom(), string(), string()}]} | {nodes, [node()]} | @@ -87,8 +89,15 @@ status() -> rabbit_mnesia:status(). reopen_logs() -> - ok = reopen_main_logs(), - ok = reopen_sasl_logs(). + ok = reopen_logs(error_log_location(), [], main_log), + ok = reopen_logs(sasl_log_location(), [], sasl_log). + +reopen_logs(Suffix) -> + LSuffix = binary_to_list(Suffix), + case reopen_logs(error_log_location(), LSuffix, main_log) of + ok -> reopen_logs(sasl_log_location(), LSuffix, sasl_log); + Error -> Error + end. %%-------------------------------------------------------------------- @@ -266,22 +275,41 @@ sasl_log_location() -> _ -> undefined end. -reopen_main_logs() -> - case error_log_location() of - tty -> ok; - File -> error_logger:swap_handler({logfile, File}) +reopen_logs(File, Suffix,Swap) -> + case File of + undefined -> ok; + tty -> ok; + _ -> case append_to_log_file(File, Suffix) of + omit -> swap_handler(Swap, File); + ok -> swap_handler(Swap, File); + Error -> Error + end end. -reopen_sasl_logs() -> - try - case sasl_log_location() of - undefined -> ok; - tty -> ok; - {file, File} -> gen_event:swap_handler(error_logger, - {sasl_error_logger, swap}, - {sasl_report_file_h, File}); - _ -> ok - end - catch - _ -> ok +swap_handler(main_log, File) -> + error_logger:swap_handler({logfile, File}), + error_logger:delete_report_handler(error_logger_file_h), + ok; +swap_handler(sasl_log, File ) -> + gen_event:swap_handler(error_logger, + {error_logger, swap}, + {sasl_report_file_h, File}), + gen_event:add_handler(error_logger, error_logger, []), + error_logger:delete_report_handler(sasl_report_file_h), + ok. + +append_to_log_file(File, Suffix) -> + case file:read_file_info(File) of + {ok, FInfo} -> append_file(File, FInfo#file_info.size, Suffix); + {error, _} -> ok + end. + +append_file(_, 0, _) -> + omit; +append_file(_, _, []) -> + omit; +append_file(File, _, Suffix) -> + case file:read_file(File) of + {ok, Data} -> file:write_file([File, Suffix], Data, [append]); + {error, _} -> {error, cannot_append_logfile} end. diff --git a/src/rabbit_control.erl b/src/rabbit_control.erl index 999e5fdd08..4c1b92bbf2 100644 --- a/src/rabbit_control.erl +++ b/src/rabbit_control.erl @@ -73,7 +73,7 @@ Available commands: force_reset cluster <ClusterNode> ... status - reopen_logs + reopen_logs [Suffix] add_user <UserName> <Password> delete_user <UserName> @@ -114,10 +114,6 @@ action(reset, Node, []) -> io:format("Resetting node ~p ...", [Node]), call(Node, {rabbit_mnesia, reset, []}); -action(reopen_logs, Node, []) -> - io:format("Reopening logs for node ~p ...", [Node]), - call(Node, {rabbit, reopen_logs, []}); - action(force_reset, Node, []) -> io:format("Forcefully resetting node ~p ...", [Node]), call(Node, {rabbit_mnesia, force_reset, []}); @@ -134,6 +130,13 @@ action(status, Node, []) -> io:format("~n~p~n", [Res]), ok; +action(reopen_logs, Node, []) -> + io:format("Reopening logs for node ~p ...", [Node]), + call(Node, {rabbit, reopen_logs, []}); +action(reopen_logs, Node, Args = [Suffix]) -> + io:format("Moving logs to files with suffix ~p and reopening logs ...", [Suffix]), + call(Node, {rabbit, reopen_logs, Args}); + action(add_user, Node, Args = [Username, _Password]) -> io:format("Creating user ~p ...", [Username]), call(Node, {rabbit_access_control, add_user, Args}); |
