diff options
| -rwxr-xr-x | scripts/rabbitmq-server | 10 | ||||
| -rw-r--r-- | scripts/rabbitmq-server.bat | 14 | ||||
| -rw-r--r-- | scripts/rabbitmq-service.bat | 11 | ||||
| -rw-r--r-- | src/rabbit.erl | 13 | ||||
| -rw-r--r-- | src/rabbit_error_logger_file_h.erl | 18 | ||||
| -rw-r--r-- | src/rabbit_sasl_report_file_h.erl | 16 | ||||
| -rw-r--r-- | src/rabbit_tests.erl | 44 |
7 files changed, 57 insertions, 69 deletions
diff --git a/scripts/rabbitmq-server b/scripts/rabbitmq-server index 7176d80130..deca5b3042 100755 --- a/scripts/rabbitmq-server +++ b/scripts/rabbitmq-server @@ -59,11 +59,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' @@ -111,8 +106,9 @@ 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}'"}' \ + -sasl sasl_error_logger false \ + -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/scripts/rabbitmq-server.bat b/scripts/rabbitmq-server.bat index 5e2097dbe9..3049f22d23 100644 --- a/scripts/rabbitmq-server.bat +++ b/scripts/rabbitmq-server.bat @@ -70,18 +70,9 @@ if "!RABBITMQ_LOG_BASE!"=="" ( rem We save the previous logs in their respective backup
rem Log management (rotation, filtering based of size...) is left as an exercice for the user.
-set BACKUP_EXTENSION=.1
-
set LOGS=!RABBITMQ_LOG_BASE!\!RABBITMQ_NODENAME!.log
set SASL_LOGS=!RABBITMQ_LOG_BASE!\!RABBITMQ_NODENAME!-sasl.log
-if exist "!LOGS!" (
- type "!LOGS!" >> "!LOGS!!BACKUP_EXTENSION!"
-)
-if exist "!SASL_LOGS!" (
- type "!SASL_LOGS!" >> "!SASL_LOGS!!BACKUP_EXTENSION!"
-)
-
rem End of log management
@@ -141,10 +132,11 @@ if not "!RABBITMQ_NODE_IP_ADDRESS!"=="" ( +P 1048576 ^
-kernel inet_default_connect_options "[{nodelay, true}]" ^
!RABBITMQ_LISTEN_ARG! ^
--kernel error_logger {file,\""!LOGS:\=/!"\"} ^
+-rabbit error_logger {file,\""!LOGS:\=/!"\"} ^
!RABBITMQ_SERVER_ERL_ARGS! ^
-sasl errlog_type error ^
--sasl sasl_error_logger {file,\""!SASL_LOGS:\=/!"\"} ^
+-sasl sasl_error_logger false ^
+-rabbit sasl_error_logger {file,\""!SASL_LOGS:\=/!"\"} ^
-os_mon start_cpu_sup true ^
-os_mon start_disksup false ^
-os_mon start_memsup false ^
diff --git a/scripts/rabbitmq-service.bat b/scripts/rabbitmq-service.bat index b2aa4f58c9..614f768b19 100644 --- a/scripts/rabbitmq-service.bat +++ b/scripts/rabbitmq-service.bat @@ -103,18 +103,9 @@ if "!RABBITMQ_LOG_BASE!"=="" ( rem We save the previous logs in their respective backup
rem Log management (rotation, filtering based on size...) is left as an exercise for the user.
-set BACKUP_EXTENSION=.1
-
set LOGS=!RABBITMQ_LOG_BASE!\!RABBITMQ_NODENAME!.log
set SASL_LOGS=!RABBITMQ_LOG_BASE!\!RABBITMQ_NODENAME!-sasl.log
-if exist "!LOGS!" (
- type "!LOGS!" >> "!LOGS!!BACKUP_EXTENSION!"
-)
-if exist "!SASL_LOGS!" (
- type "!SASL_LOGS!" >> "!SASL_LOGS!!BACKUP_EXTENSION!"
-)
-
rem End of log management
@@ -206,7 +197,7 @@ set ERLANG_SERVICE_ARGUMENTS= ^ +A30 ^
-kernel inet_default_connect_options "[{nodelay,true}]" ^
!RABBITMQ_LISTEN_ARG! ^
--kernel error_logger {file,\""!LOGS:\=/!"\"} ^
+-rabbit error_logger {file,\""!LOGS:\=/!"\"} ^
!RABBITMQ_SERVER_ERL_ARGS! ^
-sasl errlog_type error ^
-sasl sasl_error_logger {file,\""!SASL_LOGS:\=/!"\"} ^
diff --git a/src/rabbit.erl b/src/rabbit.erl index b8dbccc767..fa8e169340 100644 --- a/src/rabbit.erl +++ b/src/rabbit.erl @@ -464,6 +464,11 @@ ensure_working_log_handlers() -> sasl_report_tty_h, log_location(sasl), Handlers), + case log_location(kernel) of + tty -> ok; + undefined -> ok; + _ -> error_logger:delete_report_handler(error_logger_tty_h) + end, ok. ensure_working_log_handler(OldFHandler, NewFHandler, TTYHandler, @@ -489,10 +494,10 @@ ensure_working_log_handler(OldFHandler, NewFHandler, TTYHandler, end. log_location(Type) -> - case application:get_env(Type, case Type of - kernel -> error_logger; - sasl -> sasl_error_logger - end) of + case application:get_env(rabbit, case Type of + kernel -> error_logger; + sasl -> sasl_error_logger + end) of {ok, {file, File}} -> File; {ok, false} -> undefined; {ok, tty} -> tty; diff --git a/src/rabbit_error_logger_file_h.erl b/src/rabbit_error_logger_file_h.erl index 7e9ebc4fa2..519aac10ad 100644 --- a/src/rabbit_error_logger_file_h.erl +++ b/src/rabbit_error_logger_file_h.erl @@ -30,7 +30,8 @@ %% Used only when swapping handlers in log rotation init({{File, Suffix}, []}) -> case rabbit_misc:append_file(File, Suffix) of - ok -> ok; + ok -> file:delete(File), + ok; {error, Error} -> rabbit_log:error("Failed to append contents of " "log file '~s' to '~s':~n~p~n", @@ -45,12 +46,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_logger); 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). diff --git a/src/rabbit_sasl_report_file_h.erl b/src/rabbit_sasl_report_file_h.erl index 6f3c5c75bc..d45ed3d33d 100644 --- a/src/rabbit_sasl_report_file_h.erl +++ b/src/rabbit_sasl_report_file_h.erl @@ -31,7 +31,8 @@ %% log rotation init({{File, Suffix}, []}) -> case rabbit_misc:append_file(File, Suffix) of - ok -> ok; + ok -> file:delete(File), + ok; {error, Error} -> rabbit_log:error("Failed to append contents of " "sasl log file '~s' to '~s':~n~p~n", @@ -48,10 +49,19 @@ init({File, []}) -> init(File); init({File, _Type} = FileInfo) -> rabbit_misc:ensure_parent_dirs_exist(File), - sasl_report_file_h:init(FileInfo); + init_file(FileInfo); init(File) -> rabbit_misc:ensure_parent_dirs_exist(File), - sasl_report_file_h:init({File, sasl_error_logger_type()}). + init_file({File, sasl_error_logger_type()}). + +init_file({File, Type}) -> + process_flag(trap_exit, true), + case file:open(File, [append]) of + {ok,Fd} -> + {ok, {Fd, File, Type}}; + What -> + What + end. handle_event(Event, State) -> sasl_report_file_h:handle_event(Event, State). diff --git a/src/rabbit_tests.erl b/src/rabbit_tests.erl index cd5d9be0cc..60a755545e 100644 --- a/src/rabbit_tests.erl +++ b/src/rabbit_tests.erl @@ -801,47 +801,32 @@ test_log_management() -> ok = control_action(rotate_logs, [Suffix]), [true, true] = empty_files([[MainLog, Suffix], [SaslLog, Suffix]]), - %% original main log file is not writable - ok = make_files_non_writable([MainLog]), - {error, {cannot_rotate_main_logs, _}} = control_action(rotate_logs, []), - ok = clean_logs([MainLog], Suffix), - ok = add_log_handlers([{rabbit_error_logger_file_h, MainLog}]), - - %% original sasl log file is not writable - ok = make_files_non_writable([SaslLog]), - {error, {cannot_rotate_sasl_logs, _}} = control_action(rotate_logs, []), - ok = clean_logs([SaslLog], Suffix), - ok = add_log_handlers([{rabbit_sasl_report_file_h, SaslLog}]), - %% logs with suffix are not writable ok = control_action(rotate_logs, [Suffix]), ok = make_files_non_writable([[MainLog, Suffix], [SaslLog, Suffix]]), ok = control_action(rotate_logs, [Suffix]), ok = test_logs_working(MainLog, SaslLog), - %% original log files are not writable + %% rotate when original log files are not writable ok = make_files_non_writable([MainLog, SaslLog]), - {error, {{cannot_rotate_main_logs, _}, - {cannot_rotate_sasl_logs, _}}} = control_action(rotate_logs, []), + ok = control_action(rotate_logs, []), %% logging directed to tty (handlers were removed in last test) ok = clean_logs([MainLog, SaslLog], Suffix), - ok = application:set_env(sasl, sasl_error_logger, tty), - ok = application:set_env(kernel, error_logger, tty), + ok = application:set_env(rabbit, sasl_error_logger, tty), + ok = application:set_env(rabbit, error_logger, tty), ok = control_action(rotate_logs, []), [{error, enoent}, {error, enoent}] = empty_files([MainLog, SaslLog]), %% rotate logs when logging is turned off - ok = application:set_env(sasl, sasl_error_logger, false), - ok = application:set_env(kernel, error_logger, silent), + ok = application:set_env(rabbit, sasl_error_logger, false), + ok = application:set_env(rabbit, error_logger, silent), ok = control_action(rotate_logs, []), [{error, enoent}, {error, enoent}] = empty_files([MainLog, SaslLog]), %% cleanup - ok = application:set_env(sasl, sasl_error_logger, {file, SaslLog}), - ok = application:set_env(kernel, error_logger, {file, MainLog}), - ok = add_log_handlers([{rabbit_error_logger_file_h, MainLog}, - {rabbit_sasl_report_file_h, SaslLog}]), + ok = application:set_env(rabbit, sasl_error_logger, {file, SaslLog}), + ok = application:set_env(rabbit, error_logger, {file, MainLog}), passed. test_log_management_during_startup() -> @@ -850,8 +835,8 @@ test_log_management_during_startup() -> %% start application with simple tty logging ok = control_action(stop_app, []), - ok = application:set_env(kernel, error_logger, tty), - ok = application:set_env(sasl, sasl_error_logger, tty), + ok = application:set_env(rabbit, error_logger, tty), + ok = application:set_env(rabbit, sasl_error_logger, tty), ok = add_log_handlers([{error_logger_tty_h, []}, {sasl_report_tty_h, []}]), ok = control_action(start_app, []), @@ -868,13 +853,12 @@ test_log_management_during_startup() -> end, %% fix sasl logging - ok = application:set_env(sasl, sasl_error_logger, - {file, SaslLog}), + ok = application:set_env(rabbit, sasl_error_logger, {file, SaslLog}), %% start application with logging to non-existing directory TmpLog = "/tmp/rabbit-tests/test.log", delete_file(TmpLog), - ok = application:set_env(kernel, error_logger, {file, TmpLog}), + ok = application:set_env(rabbit, error_logger, {file, TmpLog}), ok = delete_log_handlers([rabbit_error_logger_file_h]), ok = add_log_handlers([{error_logger_file_h, MainLog}]), @@ -895,7 +879,7 @@ test_log_management_during_startup() -> %% start application with logging to a subdirectory which %% parent directory has no write permissions TmpTestDir = "/tmp/rabbit-tests/no-permission/test/log", - ok = application:set_env(kernel, error_logger, {file, TmpTestDir}), + ok = application:set_env(rabbit, error_logger, {file, TmpTestDir}), ok = add_log_handlers([{error_logger_file_h, MainLog}]), ok = case control_action(start_app, []) of ok -> exit({got_success_but_expected_failure, @@ -910,7 +894,7 @@ test_log_management_during_startup() -> %% start application with standard error_logger_file_h %% handler not installed - ok = application:set_env(kernel, error_logger, {file, MainLog}), + ok = application:set_env(rabbit, error_logger, {file, MainLog}), ok = control_action(start_app, []), ok = control_action(stop_app, []), |
