ソースを参照

add set_loghwm method in order to change high water mark on the fly

pull/249/head
Eric Liang 10年前
コミット
cd36e96fd7
2個のファイルの変更18行の追加1行の削除
  1. +9
    -1
      src/lager.erl
  2. +9
    -0
      src/lager_file_backend.erl

+ 9
- 1
src/lager.erl ファイルの表示

@ -29,7 +29,7 @@
trace/2, trace/3, trace_file/2, trace_file/3, trace_file/4, trace_console/1, trace_console/2,
clear_all_traces/0, stop_trace/1, status/0,
get_loglevel/1, set_loglevel/2, set_loglevel/3, get_loglevels/0,
update_loglevel_config/0, posix_error/1,
update_loglevel_config/0, posix_error/1, set_loghwm/2, set_loghwm/3,
safe_format/3, safe_format_chop/3, dispatch_log/5, dispatch_log/9,
do_log/9, pr/2]).
@ -320,6 +320,14 @@ get_loglevels() ->
[gen_event:call(lager_event, Handler, get_loglevel, infinity) ||
Handler <- gen_event:which_handlers(lager_event)].
%% @doc Set the loghwm for a particular backend.
set_loghwm(Handler, Hwm) when is_integer(Hwm) ->
gen_event:call(lager_event, Handler, {set_loghwm, Hwm}, infinity).
%% @doc Set the loghwm (log high water mark) for file backends with multiple identifiers
set_loghwm(Handler, Ident, Hwm) when is_integer(Hwm) ->
gen_event:call(lager_event, {Handler, Ident}, {set_loghwm, Hwm}, infinity).
%% @private
add_trace_to_loglevel_config(Trace) ->
{MinLevel, Traces} = lager_config:get(loglevel),

+ 9
- 0
src/lager_file_backend.erl ファイルの表示

@ -132,6 +132,15 @@ handle_call({set_loglevel, Level}, #state{name=Ident} = State) ->
end;
handle_call(get_loglevel, #state{level=Level} = State) ->
{ok, Level, State};
handle_call({set_loghwm, Hwm}, #state{shaper=Shaper, name=Name} = State) ->
case validate_logfile_proplist([{file, Name}, {high_water_mark, Hwm}]) of
false ->
{ok, {error, bad_log_hwm}, State};
_ ->
NewShaper = Shaper#lager_shaper{hwm=Hwm},
?INT_LOG(notice, "Changed loghwm of ~s to ~p", [Name, Hwm]),
{ok, {last_loghwm, Shaper#lager_shaper.hwm}, State#state{shaper=NewShaper}}
end;
handle_call(_Request, State) ->
{ok, ok, State}.

読み込み中…
キャンセル
保存