rewrite from lager
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

59 行
1.6 KiB

-module(rumMgrKiller).
-behavior(gen_emm).
-include("eRum.hrl").
-export([kill_me/0]).
-export([
init/1
, handleEvent/2
, handleCall/2
, handleInfo/2
, terminate/2
, code_change/3
]).
-record(state, {
killerHwm :: non_neg_integer(),
killerReTime :: non_neg_integer()
}).
kill_me() ->
gen_emm:call(rumEvent, ?MODULE, mKillSelf).
init([KillerHWM, KillerReinstallAfter]) ->
{ok, #state{killerHwm = KillerHWM, killerReTime = KillerReinstallAfter}}.
handleCall(mGetLogLevel, State) ->
{replay, ?LOG_NONE, State};
handleCall({mSetLogLevel, _Level}, State) ->
{replay, ok, State};
handleCall(mGetSettings, State = #state{killerHwm = KillerHWM, killerReTime = KillerReinstallAfter}) ->
{replay, [KillerHWM, KillerReinstallAfter], State};
handleCall(mKillSelf, #state{killerHwm = KillerHWM, killerReTime = KillerReinstallAfter}) ->
exit({kill_me, [KillerHWM, KillerReinstallAfter]});
handleCall(_Request, State) ->
{replay, ok, State}.
%% 检查每个日志消息的队列长度不是世界上最好的主意。我们将来可以使此操作在轮询计时器上起作用。
handleEvent({mWriteLog, _Message}, State = #state{killerHwm = KillerHWM, killerReTime = KillerReinstallAfter}) ->
{message_queue_len, Len} = process_info(self(), message_queue_len),
case Len > KillerHWM of
true ->
exit({kill_me, [KillerHWM, KillerReinstallAfter]});
_ ->
{ok, State}
end;
handleEvent(_Event, State) ->
{ok, State}.
handleInfo(_Info, State) ->
{ok, State}.
terminate(_Reason, _State) ->
ok.
code_change(_OldVsn, State, _Extra) ->
{ok, State}.