summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandru Scvortov <alexandru@rabbitmq.com>2011-08-11 18:34:07 +0100
committerAlexandru Scvortov <alexandru@rabbitmq.com>2011-08-11 18:34:07 +0100
commit5ff902b4d2118d5d451d976c7287f27f0d4c65da (patch)
treeea608198e2430f131fd4af03b3653c6d3cb21823
parentf6f03b1afc93639d4cc5f4c66a2e9392506b434c (diff)
downloadrabbitmq-server-git-5ff902b4d2118d5d451d976c7287f27f0d4c65da.tar.gz
only allow the rabbit error logger to touch the files and append rather than overwrite
If the standard error logger is initialised with the correct file names, the files will be overwritten. So, we no longer tell Erlang the location of the files at boot. It will automatically register an error_logger_tty_h, which we then unregister after setting up our own loggers (you can't swap a file logger for a tty logger). Still left todo: - error loggers when stopping rabbit, - windows rabbitmq-server.bat, - the other head of ensure_working_log_handlers, - it doesn't really make sense to swap out the non exitent error_logger_file_h.
-rwxr-xr-xscripts/rabbitmq-server9
-rw-r--r--src/rabbit.erl4
-rw-r--r--src/rabbit_error_logger_file_h.erl15
3 files changed, 16 insertions, 12 deletions
diff --git a/scripts/rabbitmq-server b/scripts/rabbitmq-server
index 2f80eb96c3..e33ae733e9 100755
--- a/scripts/rabbitmq-server
+++ b/scripts/rabbitmq-server
@@ -58,11 +58,6 @@ fi
[ "x" = "x$RABBITMQ_LOGS" ] && RABBITMQ_LOGS="${RABBITMQ_LOG_BASE}/${RABBITMQ_NODENAME}.log"
[ "x" = "x$RABBITMQ_SASL_LOGS" ] && RABBITMQ_SASL_LOGS=${SASL_LOGS}
[ "x" = "x$RABBITMQ_SASL_LOGS" ] && RABBITMQ_SASL_LOGS="${RABBITMQ_LOG_BASE}/${RABBITMQ_NODENAME}-sasl.log"
-[ "x" = "x$RABBITMQ_BACKUP_EXTENSION" ] && RABBITMQ_BACKUP_EXTENSION=${BACKUP_EXTENSION}
-[ "x" = "x$RABBITMQ_BACKUP_EXTENSION" ] && RABBITMQ_BACKUP_EXTENSION=".1"
-
-[ -f "${RABBITMQ_LOGS}" ] && cat "${RABBITMQ_LOGS}" >> "${RABBITMQ_LOGS}${RABBITMQ_BACKUP_EXTENSION}"
-[ -f "${RABBITMQ_SASL_LOGS}" ] && cat "${RABBITMQ_SASL_LOGS}" >> "${RABBITMQ_SASL_LOGS}${RABBITMQ_BACKUP_EXTENSION}"
RABBITMQ_START_RABBIT=
[ "x" = "x$RABBITMQ_ALLOW_INPUT" ] && RABBITMQ_START_RABBIT='-noinput'
@@ -107,8 +102,8 @@ exec erl \
${RABBITMQ_SERVER_ERL_ARGS} \
${RABBITMQ_LISTEN_ARG} \
-sasl errlog_type error \
- -kernel error_logger '{file,"'${RABBITMQ_LOGS}'"}' \
- -sasl sasl_error_logger '{file,"'${RABBITMQ_SASL_LOGS}'"}' \
+ -rabbit error_logger '{file,"'${RABBITMQ_LOGS}'"}' \
+ -rabbit sasl_error_logger '{file,"'${RABBITMQ_SASL_LOGS}'"}' \
-os_mon start_cpu_sup true \
-os_mon start_disksup false \
-os_mon start_memsup false \
diff --git a/src/rabbit.erl b/src/rabbit.erl
index 46f7d9d1f3..c855a806eb 100644
--- a/src/rabbit.erl
+++ b/src/rabbit.erl
@@ -446,7 +446,7 @@ ensure_working_log_handlers() ->
error_logger_tty_h,
log_location(kernel),
Handlers),
-
+ error_logger:delete_report_handler(error_logger_tty_h),
ok = ensure_working_log_handler(sasl_report_file_h,
rabbit_sasl_report_file_h,
sasl_report_tty_h,
@@ -477,7 +477,7 @@ ensure_working_log_handler(OldFHandler, NewFHandler, TTYHandler,
end.
log_location(Type) ->
- case application:get_env(Type, case Type of
+ case application:get_env(rabbit, case Type of
kernel -> error_logger;
sasl -> sasl_error_logger
end) of
diff --git a/src/rabbit_error_logger_file_h.erl b/src/rabbit_error_logger_file_h.erl
index 7e9ebc4fa2..dacd0de4e0 100644
--- a/src/rabbit_error_logger_file_h.erl
+++ b/src/rabbit_error_logger_file_h.erl
@@ -45,12 +45,21 @@ init({{File, _}, error}) ->
%% log rotation
init({File, []}) ->
init(File);
-init({File, _Type} = FileInfo) ->
+init({File, {error_logger, []}}) ->
rabbit_misc:ensure_parent_dirs_exist(File),
- error_logger_file_h:init(FileInfo);
+ init_file(File, error_handler);
init(File) ->
rabbit_misc:ensure_parent_dirs_exist(File),
- error_logger_file_h:init(File).
+ init_file(File, []).
+
+init_file(File, PrevHandler) ->
+ process_flag(trap_exit, true),
+ case file:open(File, [append]) of
+ {ok,Fd} ->
+ {ok, {Fd, File, PrevHandler}};
+ Error ->
+ Error
+ end.
handle_event(Event, State) ->
error_logger_file_h:handle_event(Event, State).