|
|
@ -28,12 +28,11 @@ start(_StartType, _StartArgs) -> |
|
|
|
|
|
|
|
boot() -> |
|
|
|
%% Handle the default sink. |
|
|
|
tryStartAsyncMgr(?RumDefSink, rumUtil:get_env(?RumAppName, asyncThreshold, undefined), rumUtil:get_env(?RumAppName, asyncThresholdWindow, undefined)), |
|
|
|
tryStartAsyncMgr(rumUtil:get_env(asyncThreshold, undefined), rumUtil:get_env(asyncThresholdWindow, undefined), ?RumDefSink), |
|
|
|
|
|
|
|
_ = maybe_install_sink_killer(?RumDefSink, application:get_env(lager, killer_hwm, undefined), |
|
|
|
application:get_env(lager, killer_reinstall_after, undefined)), |
|
|
|
tryInstallKiller(rumUtil:get_env(killerHwm, undefined), rumUtil:get_env(killerReTime, undefined), ?RumDefSink), |
|
|
|
|
|
|
|
start_handlers(?RumDefSink, application:get_env(lager, handlers, ?DEFAULT_HANDLER_CONF)), |
|
|
|
start_handlers(rumUtil:get_env(handlers, ?RumDefHandler), ?RumDefSink), |
|
|
|
|
|
|
|
eRum:update_loglevel_config(?RumDefSink), |
|
|
|
|
|
|
@ -71,26 +70,26 @@ stop(Handlers) -> |
|
|
|
tryStartAsyncMgr(undefined, _Window, _SinkS) -> |
|
|
|
ignore; |
|
|
|
tryStartAsyncMgr(Threshold, Window, Sink) -> |
|
|
|
case |
|
|
|
startThrottle(Sink, Threshold, Window) |
|
|
|
tryStartAsyncMgr(_Sink, Threshold, _Window) when not is_integer(Threshold) orelse Threshold < 0 -> |
|
|
|
error_logger:error_msg("Invalid value for 'asyncThreshold': ~p~n", [Threshold]), |
|
|
|
throw({error, bad_config}); |
|
|
|
tryStartAsyncMgr(Sink, Threshold, undefined) -> |
|
|
|
startThrottle(Sink, Threshold, erlang:trunc(Threshold * 0.2)); |
|
|
|
tryStartAsyncMgr(_Sink, Threshold, Window) when not is_integer(Window) orelse Window > Threshold orelse Window < 0 -> |
|
|
|
error_logger:error_msg("Invalid value for 'asyncThresholdWindow': ~p~n", [Window]), |
|
|
|
throw({error, bad_config}); |
|
|
|
tryStartAsyncMgr(Sink, Threshold, Window) -> |
|
|
|
startThrottle(Sink, Threshold, Window). |
|
|
|
case Window of |
|
|
|
undefined -> |
|
|
|
_ = supervisor:start_child(rumHWatcherSup, [Sink, ?RumBackendThrottle, [Threshold, erlang:trunc(Threshold * 0.2)]]); |
|
|
|
_ -> |
|
|
|
_ = supervisor:start_child(rumHWatcherSup, [Sink, ?RumBackendThrottle, [Threshold, Window]]) |
|
|
|
end, |
|
|
|
ok. |
|
|
|
|
|
|
|
startThrottle(Sink, Threshold, Window) -> |
|
|
|
_ = supervisor:start_child(rumHWatcherSup, [Sink, ?RumBackendThrottle, [Threshold, Window]]), |
|
|
|
tryInstallKiller(undefined, _ReTime, _Sink) -> ok; |
|
|
|
tryInstallKiller(HWM, ReTime, Sink) -> |
|
|
|
case ReTime of |
|
|
|
undefined -> |
|
|
|
_ = supervisor:start_child(rumHWatcherSup, [Sink, rumMgrKiller, [HWM, 5000]]); |
|
|
|
_ -> |
|
|
|
_ = supervisor:start_child(rumHWatcherSup, [Sink, rumMgrKiller, [HWM, ReTime]]) |
|
|
|
end, |
|
|
|
ok. |
|
|
|
|
|
|
|
start_handlers(_Sink, undefined) -> |
|
|
|
ok; |
|
|
|
start_handlers(_Sink, Handlers) when not is_list(Handlers) -> |
|
|
|
start_handlers(undefined, _Sink) -> ok; |
|
|
|
start_handlers(Handlers, _Sink) when not is_list(Handlers) -> |
|
|
|
error_logger:error_msg("Invalid value for 'handlers' (must be list): ~p~n", [Handlers]), |
|
|
|
throw({error, bad_config}); |
|
|
|
start_handlers(Sink, Handlers) -> |
|
|
@ -144,15 +143,6 @@ interpret_hwm(HWM) when not is_integer(HWM) orelse HWM < 0 -> |
|
|
|
interpret_hwm(HWM) -> |
|
|
|
HWM. |
|
|
|
|
|
|
|
maybe_install_sink_killer(_Sink, undefined, _ReinstallTimer) -> ok; |
|
|
|
maybe_install_sink_killer(Sink, HWM, undefined) -> maybe_install_sink_killer(Sink, HWM, 5000); |
|
|
|
maybe_install_sink_killer(Sink, HWM, ReinstallTimer) when is_integer(HWM) andalso is_integer(ReinstallTimer) andalso HWM >= 0 andalso ReinstallTimer >= 0 -> |
|
|
|
_ = supervisor:start_child(lager_handler_watcher_sup, [Sink, lager_manager_killer, |
|
|
|
[HWM, ReinstallTimer]]); |
|
|
|
maybe_install_sink_killer(_Sink, HWM, ReinstallTimer) -> |
|
|
|
error_logger:error_msg("Invalid value for 'killer_hwm': ~p or 'killer_reinstall_after': ~p", [HWM, ReinstallTimer]), |
|
|
|
throw({error, bad_config}). |
|
|
|
|
|
|
|
-spec start_error_logger_handler(boolean(), pos_integer(), list()) -> list(). |
|
|
|
start_error_logger_handler(false, _HWM, _Whitelist) -> |
|
|
|
[]; |
|
|
@ -218,8 +208,8 @@ configure_sink(Sink, SinkDef) -> |
|
|
|
ChildId = rumUtil:make_internal_sink_name(Sink), |
|
|
|
_ = supervisor:start_child(eRum_sup, {ChildId, {gen_event, start_link, [{local, Sink}]}, permanent, 5000, worker, dynamic}), |
|
|
|
tryStartAsyncMgr(Sink, proplists:get_value(asyncThreshold, SinkDef), proplists:get_value(asyncThresholdWindow, SinkDef)), |
|
|
|
_ = maybe_install_sink_killer(Sink, proplists:get_value(killer_hwm, SinkDef), |
|
|
|
proplists:get_value(killer_reinstall_after, SinkDef)), |
|
|
|
_ = tryInstallKiller(Sink, proplists:get_value(killerHwm, SinkDef), |
|
|
|
proplists:get_value(killerReTime, SinkDef)), |
|
|
|
start_handlers(Sink, proplists:get_value(handlers, SinkDef, [])), |
|
|
|
eRum:update_loglevel_config(Sink). |
|
|
|
|
|
|
|