diff --git a/eRum.sample.config b/eRum.sample.config index a661025..d1a74de 100644 --- a/eRum.sample.config +++ b/eRum.sample.config @@ -39,7 +39,7 @@ %% crash log cfg %% 有效值 string | false %% 为 false 的时候 没有 crash logger. - {crash_log, "log/crash.log"}, + {crashLogFile, "crash.log"}, %%崩溃日志中事件的最大大小(以字节为单位)-默认为65536 {crash_log_msg_size, 65536}, %% 崩溃日志的最大大小(以字节为单位),在旋转之前,设置为0以禁用旋转-默认值为0 diff --git a/src/misc/rumCrashLog.erl b/src/crashLog/rumCrashLog.erl similarity index 100% rename from src/misc/rumCrashLog.erl rename to src/crashLog/rumCrashLog.erl diff --git a/src/eRum.app.src b/src/eRum.app.src index 9932d63..619c4bc 100644 --- a/src/eRum.app.src +++ b/src/eRum.app.src @@ -4,7 +4,7 @@ {vsn, "3.9.0"}, {modules, []}, {applications, [kernel, stdlib, goldrush]}, - {registered, [eRum_sup, lager_event, rumCrashLog, rumHleWatcherSup]}, + {registered, [eRum_sup, lager_event, rumCrashLog, rumHWatcherSup]}, {mod, {eRum_app, []}}, {env, [ %% Note: application:start(lager) overwrites previously defined environment variables thus declaration of default handlers is done at lager_app.erl diff --git a/src/eRum_sup.erl b/src/eRum_sup.erl index 4b7875d..1c5de7d 100644 --- a/src/eRum_sup.erl +++ b/src/eRum_sup.erl @@ -45,42 +45,41 @@ init(_Args) -> RumEventSpec = #{ id => rumEvent, - start => {gen_event, start_link, [{local, rumEvent}]}, + start => {gen_emm, start_link, [{local, rumEvent}]}, restart => permanent, shutdown => 5000, type => worker, modules => [dynamic] }, - RumHleWatcherSupSpec = #{ - id => rumHleWatcherSup, - start => {rumHleWatcherSup, start_link, []}, + + RumHWatcherSupSpec = #{ + id => rumHWatcherSup, + start => {rumHWatcherSup, start_link, []}, restart => permanent, shutdown => 5000, type => supervisor, - modules => [rumHleWatcherSup] + modules => [rumHWatcherSup] }, - CrashLogSpec = crashLogSpec(application:get_env(lager, crash_log, false)), + CrashLogSpec = crashLogSpec(application:get_env(?RumAppName, crashLogFile, false)), ChildSpecs = case CrashLogSpec of undefined -> - [RumEventSpec, RumHleWatcherSupSpec]; + [RumEventSpec, RumHWatcherSupSpec]; _ -> - [RumEventSpec, RumHleWatcherSupSpec, CrashLogSpec] + [RumEventSpec, RumHWatcherSupSpec, CrashLogSpec] end, {ok, {SupFlags, ChildSpecs}}. -crashLogSpec(undefined) -> - undefined; crashLogSpec(false) -> undefined; crashLogSpec(File) -> - MaxBytes = ensurePositive(application:get_env(?RumAppName, crash_log_msg_size), 65536), - RotationSize = ensurePositive(application:get_env(?RumAppName, crash_log_size), 0), - RotationCount = ensurePositive(application:get_env(?RumAppName, crash_log_count), 0), - RotationDate = rotationDate(application:get_env(?RumAppName, crash_log_date)), - RotationMod = rotatorMod(application:get_env(?RumAppName, crash_log_rotator), lager_rotator_default), + MaxBytes = rumUtil:get_env(?RumAppName, crash_log_msg_size, 65536), + RotationSize = rumUtil:get_env(?RumAppName, crash_log_size, 0), + RotationCount = rumUtil:get_env(?RumAppName, crash_log_count, 0), + RotationDate = rumUtil:get_env(?RumAppName, crash_log_date, "$D0"), + RotationMod = rumUtil:get_env(?RumAppName, crash_log_rotator, lager_rotator_default), #{ id => rumCrashLog, start => {rumCrashLog, start_link, [File, MaxBytes, RotationSize, RotationDate, RotationCount, RotationMod]}, @@ -90,27 +89,3 @@ crashLogSpec(File) -> modules => [rumCrashLog] }. -%% IMY-todo 下面这些函数删除掉 - -ensurePositive({ok, Val}, _Default) when is_integer(Val) andalso Val >= 0 -> - Val; -ensurePositive(_Val, Default) -> - Default. - -rotationDate({ok, ""}) -> - undefined; -rotationDate({ok, Val3}) -> - case rumUtil:parse_rotation_date_spec(Val3) of - {ok, Spec} -> Spec; - {error, _} -> - error_logger:error_msg("Invalid date spec for crash log ~p~n", [Val3]), - undefined - end; -rotationDate(_) -> - undefined. - -rotatorMod({ok, Mod}, _Default) when is_atom(Mod) -> - Mod; -rotatorMod(_, Default) -> - Default. - diff --git a/src/utils/rumUtil.erl b/src/utils/rumUtil.erl index 32a0b5d..caf29ea 100644 --- a/src/utils/rumUtil.erl +++ b/src/utils/rumUtil.erl @@ -29,6 +29,7 @@ , otp_version/0 , maybe_flush/2 , has_file_changed/3 + , get_env/3 ]). -ifdef(TEST). @@ -637,6 +638,20 @@ has_file_changed(Name, Inode0, Ctime0) -> {true, undefined} end. +-spec get_env(Application, Par, Def) -> Val when + Application :: atom(), + Par :: atom(), + Def :: term(), + Val :: term(). + +get_env(Application, Key, Def) -> + case application:get_env(Application, Key) of + {ok, Val} -> + Val; + _ -> + Def + end. + -ifdef(TEST). parse_test() -> diff --git a/src/watcher/rumHleWatcherSrv.erl b/src/watcher/rumHWatcherSrv.erl similarity index 99% rename from src/watcher/rumHleWatcherSrv.erl rename to src/watcher/rumHWatcherSrv.erl index 439200c..f4f1c47 100644 --- a/src/watcher/rumHleWatcherSrv.erl +++ b/src/watcher/rumHWatcherSrv.erl @@ -1,4 +1,4 @@ --module(rumHleWatcherSrv). +-module(rumHWatcherSrv). -behaviour(gen_srv). diff --git a/src/watcher/rumHleWatcherSup.erl b/src/watcher/rumHWatcherSup.erl similarity index 91% rename from src/watcher/rumHleWatcherSup.erl rename to src/watcher/rumHWatcherSup.erl index 40a5cbe..18e8cd4 100644 --- a/src/watcher/rumHleWatcherSup.erl +++ b/src/watcher/rumHWatcherSup.erl @@ -1,4 +1,4 @@ --module(rumHleWatcherSup). +-module(rumHWatcherSup). -behaviour(supervisor). @@ -36,12 +36,12 @@ init(_Args) -> }, ChildSpecs = [ #{ - id => rumHleWatcherSrv, - start => {rumHleWatcherSrv, start_link, []}, + id => rumHWatcherSrv, + start => {rumHWatcherSrv, start_link, []}, restart => temporary, shutdown => 5000, type => worker, - modules => [rumHleWatcherSrv] + modules => [rumHWatcherSrv] } ], {ok, {SupFlags, ChildSpecs}}.