diff options
author | Alexandru Scvortov <alexandru@rabbitmq.com> | 2011-08-11 18:34:07 +0100 |
---|---|---|
committer | Alexandru Scvortov <alexandru@rabbitmq.com> | 2011-08-11 18:34:07 +0100 |
commit | 1e30805fa9114690f1f159f83eff1f84e5d89b9e (patch) | |
tree | ea608198e2430f131fd4af03b3653c6d3cb21823 /src/rabbit_error_logger_file_h.erl | |
parent | f5ce49652d4e5c143e356969e9b7bc9e665e617d (diff) | |
download | rabbitmq-server-1e30805fa9114690f1f159f83eff1f84e5d89b9e.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.
Diffstat (limited to 'src/rabbit_error_logger_file_h.erl')
-rw-r--r-- | src/rabbit_error_logger_file_h.erl | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/rabbit_error_logger_file_h.erl b/src/rabbit_error_logger_file_h.erl index 7e9ebc4f..dacd0de4 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). |