rewrite from lager
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

88 рядки
3.2 KiB

4 роки тому
4 роки тому
4 роки тому
4 роки тому
4 роки тому
4 роки тому
4 роки тому
4 роки тому
4 роки тому
4 роки тому
4 роки тому
4 роки тому
4 роки тому
4 роки тому
4 роки тому
4 роки тому
4 роки тому
4 роки тому
4 роки тому
4 роки тому
4 роки тому
4 роки тому
4 роки тому
4 роки тому
4 роки тому
4 роки тому
4 роки тому
  1. -module(eRum_sup).
  2. -behaviour(supervisor).
  3. -include("rumDef.hrl").
  4. -export([
  5. start_link/0
  6. ]).
  7. -export([
  8. init/1
  9. ]).
  10. start_link() ->
  11. supervisor:start_link({local, ?MODULE}, ?MODULE, []).
  12. % 主管的孩子被定义为孩子规格列表 。当主管启动时,将根据此列表从左到右依次启动子进程。主管终止时,它首先以相反的启动顺序从右到左终止其子进程。
  13. % sup_flags() =
  14. % #{
  15. % strategy => strategy(), % optional one_for_one | one_for_all | rest_for_one | simple_one_for_one
  16. % intensity => non_neg_integer(), % optional MaxR 周期时间内最大重启次数
  17. % period => pos_integer() % optional MaxT 重启时间周期 MaxT里重启次数大于MaxR
  18. % }
  19. % child_spec() =
  20. % #{
  21. % id => child_id(), % mandatory Id用来内部标识子规范
  22. % start => mfargs(), % mandatory {M,F,A}
  23. % restart => restart(), % optional permanent(总是重启) | transient(异常关闭会重启即关闭原因非 normal,shutdown,{shutdown,Term}) | temporary(不会重启)
  24. % shutdown => shutdown(), % optional brutal_kill | infinity | integer
  25. % type => worker(), % optional supervisor | worker
  26. % modules => modules() % optional [Module] 假如子进程是supervisor、gen_server 或 gen_fsm,那么Module 是回调模块的名称;假如子进程是gen_event,那么Modules 应该是dynamic
  27. % }
  28. init(_Args) ->
  29. %% set up the config, is safe even during relups
  30. %% IMY-TODO 修改配置文件相关时这要删除掉
  31. rumConfig:init(),
  32. %%始终将runEvent作为默认值启动,并确保可以根据需要启动其他gen_event东西也许是一个用于处理接收器及其策略的新API?
  33. SupFlags =
  34. #{
  35. strategy => one_for_one,
  36. intensity => 10,
  37. period => 60
  38. },
  39. RumEventSpec = #{
  40. id => rumEvent,
  41. start => {gen_emm, start_link, [{local, rumEvent}]},
  42. restart => permanent,
  43. shutdown => 5000,
  44. type => worker,
  45. modules => [dynamic]
  46. },
  47. RumHWatcherSupSpec = #{
  48. id => rumHWatcherSup,
  49. start => {rumHWatcherSup, start_link, []},
  50. restart => permanent,
  51. shutdown => 5000,
  52. type => supervisor,
  53. modules => [rumHWatcherSup]
  54. },
  55. ChildSpecs =
  56. case rumUtil:get_env(crashLogFile, false) of
  57. false ->
  58. [RumEventSpec, RumHWatcherSupSpec];
  59. File ->
  60. MsgMaxBytes = rumUtil:get_env(crashLogMsgSize, 65536),
  61. RotationSize = rumUtil:get_env(crashLogFileSize, 0),
  62. RotationCount = rumUtil:get_env(crashLogCount, 0),
  63. RotationDate = rumUtil:get_env(crashLogDate, "$D0"),
  64. RotationMod = rumUtil:get_env(crashLogRotator, rumRotatorIns),
  65. CrashLogSpec = #{
  66. id => rumCrashLog,
  67. start => {rumCrashLog, start_link, [File, MsgMaxBytes, RotationSize, RotationDate, RotationCount, RotationMod]},
  68. restart => permanent,
  69. shutdown => 5000,
  70. type => worker,
  71. modules => [rumCrashLog]
  72. },
  73. [RumEventSpec, RumHWatcherSupSpec, CrashLogSpec]
  74. end,
  75. {ok, {SupFlags, ChildSpecs}}.