rewrite from lager
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

91 rader
3.2 KiB

4 år sedan
4 år sedan
4 år sedan
4 år sedan
4 år sedan
4 år sedan
4 år sedan
4 år sedan
4 år sedan
4 år sedan
4 år sedan
4 år sedan
4 år sedan
4 år sedan
4 år sedan
4 år sedan
4 år sedan
4 år sedan
4 år sedan
  1. -module(eRum_sup).
  2. -behaviour(supervisor).
  3. -include("eRum.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. rumConfig:init(),
  31. %%始终将lager_event作为默认值启动,并确保可以根据需要启动其他gen_event东西也许是一个用于处理接收器及其策略的新API?
  32. SupFlags =
  33. #{
  34. strategy => one_for_one,
  35. intensity => 10,
  36. period => 60
  37. },
  38. RumEventSpec = #{
  39. id => rumEvent,
  40. start => {gen_emm, start_link, [{local, rumEvent}]},
  41. restart => permanent,
  42. shutdown => 5000,
  43. type => worker,
  44. modules => [dynamic]
  45. },
  46. RumHWatcherSupSpec = #{
  47. id => rumHWatcherSup,
  48. start => {rumHWatcherSup, start_link, []},
  49. restart => permanent,
  50. shutdown => 5000,
  51. type => supervisor,
  52. modules => [rumHWatcherSup]
  53. },
  54. CrashLogSpec = crashLogSpec(rumUtil:get_env(crashLogFile, false)),
  55. ChildSpecs =
  56. case CrashLogSpec of
  57. undefined ->
  58. [RumEventSpec, RumHWatcherSupSpec];
  59. _ ->
  60. [RumEventSpec, RumHWatcherSupSpec, CrashLogSpec]
  61. end,
  62. {ok, {SupFlags, ChildSpecs}}.
  63. crashLogSpec(false) ->
  64. undefined;
  65. crashLogSpec(File) ->
  66. MaxBytes = rumUtil:get_env(crash_log_msg_size, 65536),
  67. RotationSize = rumUtil:get_env(crash_log_size, 0),
  68. RotationCount = rumUtil:get_env(crash_log_count, 0),
  69. RotationDate = rumUtil:get_env(crash_log_date, "$D0"),
  70. RotationMod = rumUtil:get_env(crash_log_rotator, lager_rotator_default),
  71. #{
  72. id => rumCrashLog,
  73. start => {rumCrashLog, start_link, [File, MaxBytes, RotationSize, RotationDate, RotationCount, RotationMod]},
  74. restart => permanent,
  75. shutdown => 5000,
  76. type => worker,
  77. modules => [rumCrashLog]
  78. }.