From 5002acc4f18c6ceb0c44e7c141094fe0922cbf53 Mon Sep 17 00:00:00 2001 From: SisMaker <1713699517@qq.com> Date: Thu, 11 Mar 2021 23:56:49 +0800 Subject: [PATCH] =?UTF-8?q?ft:=20rumBkdFile=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/backend/rumBkdThrottle.erl | 59 ++++++++++++++++------------------ src/crashLog/rumCrashLog.erl | 2 +- 2 files changed, 29 insertions(+), 32 deletions(-) diff --git a/src/backend/rumBkdThrottle.erl b/src/backend/rumBkdThrottle.erl index 3a61912..1a906b7 100644 --- a/src/backend/rumBkdThrottle.erl +++ b/src/backend/rumBkdThrottle.erl @@ -1,20 +1,18 @@ -%% @doc A simple gen_event backend used to monitor mailbox size and -%% switch log messages between synchronous and asynchronous modes. -%% A gen_event handler is used because a process getting its own mailbox -%% size doesn't involve getting a lock, and gen_event handlers run in their -%% parent's process. - -module(rumBkdThrottle). --behaviour(gen_event). +%% @doc一个简单的gen_event后端,用于监视邮箱大小和在同步和异步模式之间切换日志消息。 +%%使用gen_event处理程序是因为进程获得了自己的邮箱的大小不涉及获取锁定, +%% 并且gen_event处理程序在其中运行parent's的进程里。 + +-behaviour(gen_emm). -include("eRum.hrl"). -export([ init/1 - , handle_call/2 - , handle_event/2 - , handle_info/2 + , handleCall/2 + , handleEvent/2 + , handleInfo/2 , terminate/2, code_change/3 ]). @@ -22,46 +20,45 @@ -record(state, { sink :: atom(), hwm :: non_neg_integer(), - window_min :: non_neg_integer(), + window :: non_neg_integer(), async = true :: boolean() }). init([{sink, Sink}, Hwm, Window]) -> rumConfig:set({Sink, async}, true), - {ok, #state{sink = Sink, hwm = Hwm, window_min = Hwm - Window}}. + {ok, #state{sink = Sink, hwm = Hwm, window = Hwm - Window}}. -handle_call(mGetLogLevel, State) -> - {ok, ?LOG_NONE, State}; -handle_call({mSetLogLevel, _Level}, State) -> - {ok, ok, State}; -handle_call(_Request, State) -> - {ok, ok, State}. +handleCall(mGetLogLevel, State) -> + {reply, ?LOG_NONE, State}; +handleCall({mSetLogLevel, _Level}, State) -> + {reply, ok, State}; +handleCall(_Msg, State) -> + ?ERR("~p call receive unexpect msg ~p ~n ", [?MODULE, _Msg]), + {reply, ok, State}. -handle_event({mWriteLog, _Message}, State) -> - {message_queue_len, Len} = erlang:process_info(self(), message_queue_len), - case {Len > State#state.hwm, Len < State#state.window_min, State#state.async} of - {true, _, true} -> +handleEvent({mWriteLog, _Message}, #state{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 rumConfig:set({State#state.sink, async}, false), {ok, State#state{async = false}}; - {_, true, false} -> + MsgLen < Window andalso not Async -> %% need to flip to async mode rumConfig:set({State#state.sink, async}, true), {ok, State#state{async = true}}; - _ -> + true -> %% nothing needs to change - {ok, State} + kpS end; -handle_event(_Event, State) -> - {ok, State}. +handleEvent(_Event, _State) -> + kpS. -handle_info(_Info, State) -> - {ok, State}. +handleInfo(_Info, _State) -> + kpS. -%% @private terminate(_Reason, _State) -> ok. -%% @private code_change(_OldVsn, State, _Extra) -> {ok, State}. diff --git a/src/crashLog/rumCrashLog.erl b/src/crashLog/rumCrashLog.erl index 9ff9b61..a668c1d 100644 --- a/src/crashLog/rumCrashLog.erl +++ b/src/crashLog/rumCrashLog.erl @@ -1,7 +1,7 @@ -module(rumCrashLog). + %% @doc eRum crash log writer。它将error_logger错误消息以其原始格式发送到`crash_log`指定的文件, 如果`crash_log`未设置则禁用crash logging %% Crash logs are printed safely using trunc_io via code mostly lifted from riak_err. -%% %% `crashLogMsgSize` 应用程序var用于指定最大值要记录的任何消息的大小。 %% `crashLogFileSize` 用于指定崩溃日志的最大大小,然后将其旋转(0将禁用)。 %% `crashLogDate` 基于时间的轮播可通过配置,语法为自述文件中记录了