diff options
author | Mickaël Rémond <mickael.remond@process-one.net> | 2006-03-04 17:33:23 +0000 |
---|---|---|
committer | Mickaël Rémond <mickael.remond@process-one.net> | 2006-03-04 17:33:23 +0000 |
commit | 804c32c1001a971b50553eaf7861c28b47b56278 (patch) | |
tree | 6ecd67889f0f885ab240db0bbee9974a33781385 | |
parent | * src/web/ejabberd_web_admin.erl: Added a interface for node (diff) |
* src/ejabberd_logger_h.erl: reopen-log function now rename the log
file if it has not been already renamed by a logrotate process. This
change allow ejabberd administrators to rotate log files on Windows
(EJAB-52).
SVN Revision: 514
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | src/ejabberd_logger_h.erl | 15 |
2 files changed, 22 insertions, 0 deletions
@@ -1,3 +1,10 @@ +2006-03-04 Mickael Remond <mickael.remond@process-one.net> + + * src/ejabberd_logger_h.erl: reopen-log function now rename the log + file if it has not been already renamed by a logrotate process. This + change allow ejabberd administrators to rotate log files on Windows + (EJAB-52). + 2006-02-27 Alexey Shchepin <alexey@sevcom.net> * src/web/ejabberd_web_admin.erl: Added a interface for node diff --git a/src/ejabberd_logger_h.erl b/src/ejabberd_logger_h.erl index 462f408d4..975a9b25f 100644 --- a/src/ejabberd_logger_h.erl +++ b/src/ejabberd_logger_h.erl @@ -66,6 +66,7 @@ handle_info({'EXIT', _Fd, _Reason}, _State) -> remove_handler; handle_info({emulator, _GL, reopen}, State) -> file:close(State#state.fd), + rotate_log(State#state.file), case file:open(State#state.file, [append, raw]) of {ok, Fd} -> {ok, State#state{fd = Fd}}; @@ -189,3 +190,17 @@ write_time({{Y,Mo,D},{H,Mi,S}}, Type) -> io_lib:format("~n=~s==== ~w-~.2.0w-~.2.0w ~.2.0w:~.2.0w:~.2.0w ===~n", [Type, Y, Mo, D, H, Mi, S]). +%% Rename the log file if it the filename exists +%% This is needed in systems when the file must be closed before rotation (Windows). +%% On most Unix-like system, the file can be renamed from the command line and +%%the log can directly be reopened. +rotate_log(Filename) -> + case file:read_file_info(Filename) of + {ok, _FileInfo} -> + RotationName = filename:rootname(Filename), + file:rename(Filename, [RotationName, "-old.log"]), + ok; + {error, _Reason} -> + ok + end. + |