From: John 'f. F. <fes...@n5...> - 2008-07-10 17:00:45
|
log_wrap_size = Integer If we set the value to 0 the logs will never wrap. If we want to use Yaws in combination with a more traditional log wrapper such as logrotate, set the size to 0 and Yaws will reopen the log- files once they have be renamed/removed. We tried this, and noticed that the "renamed" logfiles were still kept open after the original named file was reopened. resulting in a FD leak. The fix seems simple: also close the old log in the "Logfile disappeared" part of the case statement. for you consideration, a patch: Index: yaws_log.erl =================================================================== --- yaws_log.erl (revision 3394) +++ yaws_log.erl (revision 3395) @@ -441,6 +441,7 @@ %% Logfile disapeared, error_logger:format("Logfile ~p disapeared - we reopen it", [AL#alog.filename]), + file:close(AL#alog.fd), {ok, Fd2} = file:open(AL#alog.filename, [write, raw]), AL#alog{fd = Fd2} end. -- fess |
From: Claes W. <kl...@ta...> - 2008-07-11 13:40:19
|
John 'fess' Fessenden wrote: > for you consideration, a patch: > > Index: yaws_log.erl > =================================================================== > --- yaws_log.erl (revision 3394) > +++ yaws_log.erl (revision 3395) > @@ -441,6 +441,7 @@ > %% Logfile disapeared, > error_logger:format("Logfile ~p disapeared - we reopen > it", > [AL#alog.filename]), > + file:close(AL#alog.fd), > {ok, Fd2} = file:open(AL#alog.filename, [write, raw]), > AL#alog{fd = Fd2} > end. Brilliant - applied. /klacke |