ソースを参照

fx: 代码整理

master
SisMaker 3年前
コミット
81384f3e66
4個のファイルの変更21行の追加45行の削除
  1. +4
    -4
      src/backend/lgBkdThrottle.erl
  2. +2
    -10
      src/eLog.erl
  3. +14
    -30
      src/eLog_app.erl
  4. +1
    -1
      src/watcher/lgHWatcherSrv.erl

+ 4
- 4
src/backend/lgBkdThrottle.erl ファイルの表示

@ -27,7 +27,7 @@
async = true :: boolean()
}).
init([{sink, Sink}, Hwm, Window]) ->
init([Sink, Hwm, Window]) ->
lgConfig:ptSet({Sink, async}, true),
{ok, #state{sink = Sink, hwm = Hwm, window = Hwm - Window}}.
@ -39,16 +39,16 @@ handleCall(_Msg, State) ->
?ERR(<<"~p call receive unexpect msg ~p ~n ">>, [?MODULE, _Msg]),
{reply, ok, State}.
handleEvent({mWriteLog, _Message}, #state{hwm = Hwm, window = Window, async = Async} = State) ->
handleEvent({mWriteLog, _Message}, #state{sink = Sink, hwm = Hwm, window = Window, async = Async} = State) ->
{_, MsgLen} = erlang:process_info(self(), message_queue_len),
if
MsgLen > Hwm andalso Async ->
%% need to flip to sync mode
lgConfig:ptSet({State#state.sink, async}, false),
lgConfig:ptSet({Sink, async}, false),
{ok, State#state{async = false}};
MsgLen < Window andalso not Async ->
%% need to flip to async mode
lgConfig:ptSet({State#state.sink, async}, true),
lgConfig:ptSet({Sink, async}, true),
{ok, State#state{async = true}};
true ->
%% nothing needs to change

+ 2
- 10
src/eLog.erl ファイルの表示

@ -327,13 +327,7 @@ stopTrace({Backend, Filter, Level}) ->
validateTraceFilters(Filters, Level, Backend) ->
Sink = proplists:get_value(sink, Filters, ?LgDefSink),
{Sink,
lgUtil:validate_trace({
proplists:delete(sink, Filters),
Level,
Backend
})
}.
{Sink, lgUtil:validate_trace({proplists:delete(sink, Filters), Level, Backend})}.
%% Important: validate_trace_filters orders the arguments of
%% trace tuples differently than the way outside callers have
@ -358,9 +352,7 @@ stopTraceInt({_Filter, _Level, Backend} = Trace, Sink) ->
case lists:keyfind(Backend, 3, NewTraces) of
false ->
gen_emm:delEpm(Sink, Backend, []),
lgConfig:ptSet(handlers,
lists:keydelete(Backend, 1,
lgConfig:ptGet(handlers, [])));
lgConfig:ptSet(handlers, lists:keydelete(Backend, 1, lgConfig:ptGet(handlers, [])));
_ ->
ok
end;

+ 14
- 30
src/eLog_app.erl ファイルの表示

@ -98,9 +98,9 @@ tryStartAsyncMgr(undefined, _Window, _Sink) ->
tryStartAsyncMgr(Threshold, Window, Sink) ->
case Window of
undefined ->
supervisor:start_child(lgHWatcherSup, [Sink, lgBkdThrottle, [Threshold, erlang:trunc(Threshold * 0.2)]]);
supervisor:start_child(lgHWatcherSup, [Sink, lgBkdThrottle, [Sink, Threshold, erlang:trunc(Threshold * 0.2)]]);
_ ->
supervisor:start_child(lgHWatcherSup, [Sink, lgBkdThrottle, [Threshold, Window]])
supervisor:start_child(lgHWatcherSup, [Sink, lgBkdThrottle, [Sink, Threshold, Window]])
end,
ok.
@ -124,16 +124,16 @@ tryStartHandlers(Handlers, Sink) ->
doStartHandlers([], _Sink, _NameAcc, HandlerAcc) ->
HandlerAcc;
doStartHandlers([OneHandler | Handlers], Sink, NameAcc, HandlerAcc) ->
{Module, Options} = parseHandlers(OneHandler),
{Module, Options} = tryMakeHandlerId(OneHandler),
NewNameAcc =
case Module of
{lgBkFile, F} ->
case lists:member(F, NameAcc) of
{lgBkFile, FId} ->
case lists:member(FId, NameAcc) of
true ->
error_logger:error_msg(<<"Cannot have same file (~p) in multiple file backends~n">>, [F]),
error_logger:error_msg(<<"Cannot have same file (~p) in multiple file backends~n">>, [FId]),
throw({error, bad_config});
_ ->
[F | NameAcc]
[FId | NameAcc]
end;
_ ->
NameAcc
@ -167,14 +167,12 @@ tryStartErrLoggerHandler(_ErrLoggerRedirect, Hwm, WhiteList) ->
%% capture which handlers we removed from error_logger so we can restore them when eLog stops
%% error_logger中删除的处理程序便eLog停止时恢复它们
OldHandlers =
case supervisor:start_child(lgHWatcherSup, [error_logger, lgErrLoggerH, [Hwm, lgUtil:get_env(errLoggerGLS, handle)]]) of
{ok, _} ->
[begin error_logger:delete_report_handler(X), X end || X <- gen_event:which_handlers(error_logger) -- [lgErrLoggerH | WhiteList]];
{error, _} ->
[]
end,
OldHandlers.
case supervisor:start_child(lgHWatcherSup, [error_logger, lgErrLoggerH, [Hwm, lgUtil:get_env(errLoggerGLS, handle)]]) of
{ok, _} ->
[begin error_logger:delete_report_handler(X), X end || X <- gen_event:which_handlers(error_logger) -- [lgErrLoggerH | WhiteList]];
{error, _} ->
[]
end.
%% OTP 21.1`default' handlertry-catch块中
tryRemoveLoggerHandler() ->
@ -186,25 +184,11 @@ tryRemoveLoggerHandler() ->
error_logger:error_msg(<<"calling logger:remove_handler(default) failed: ~p ~p">>, [Err, Reason])
end.
parseHandlers([]) ->
[];
parseHandlers({lgBkdFile, Config}) ->
%% this is definitely a new-style config, no expansion needed
maybe_make_handler_id(lgBkdFile, Config);
parseHandlers({Mod, Config}) ->
maybe_make_handler_id(Mod, Config).
maybe_make_handler_id(Mod, Config) ->
%% Allow the backend to generate a gen_event handler id, if it wants to.
%% We don't use erlang:function_exported here because that requires the module
%% already be loaded, which is unlikely at this phase of startup. Using code:load
%% caused undesirable side-effects with generating code-coverage reports.
tryMakeHandlerId({Mod, Config}) ->
%%gen_event处理程序id
%%使erlang:function_exported
%%使:
%%
try Mod:configToId(Config) of
Id ->
{Id, Config}

+ 1
- 1
src/watcher/lgHWatcherSrv.erl ファイルの表示

@ -99,7 +99,7 @@ installHandler(Module, Config, Sink) ->
lgBkThrottle ->
%% lgBkdThrottle需要知道它连接到哪个接收器' init'
%%
gen_emm:add_sup_epm(Sink, Module, [{sink, Sink} | Config]);
gen_emm:add_sup_epm(Sink, Module, Config);
_ ->
gen_emm:add_sup_epm(Sink, Module, Config)
end,

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