From 6adb631de203336c46802b0b9b145b5d5ea73db6 Mon Sep 17 00:00:00 2001 From: SisMaker <1713699517@qq.com> Date: Mon, 15 Mar 2021 18:07:22 +0800 Subject: [PATCH] =?UTF-8?q?ft:=20=E4=BB=A3=E7=A0=81=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/eRum.hrl | 6 +++--- src/backend/rumBkdConsole.erl | 2 +- src/backend/rumBkdFile.erl | 20 +++++++++----------- src/eRum.erl | 14 +++++++------- src/test/lager_common_test_backend.erl | 2 +- src/utils/rumMsg.erl | 8 ++++---- src/utils/rumUtil.erl | 10 +++++----- 7 files changed, 30 insertions(+), 32 deletions(-) diff --git a/include/eRum.hrl b/include/eRum.hrl index dc4b9ac..32237fd 100644 --- a/include/eRum.hrl +++ b/include/eRum.hrl @@ -52,8 +52,8 @@ {line, ?LINE} | Extras ]). --type rumLevel() :: none | debug | info | notice | warning | error | critical | alert | emergency. --type rumLevelNum() :: 0..256. +-type rumAtomLevel() :: none | debug | info | notice | warning | error | critical | alert | emergency. +-type rumMaskLevel() :: 0..256. %% 日志等级列表 @@ -172,7 +172,7 @@ -record(rumMsg, { destinations :: list(), metadata :: [tuple()], - severity :: rumLevel(), + severity :: rumAtomLevel(), datetime :: binary(), timestamp :: non_neg_integer(), message :: list() diff --git a/src/backend/rumBkdConsole.erl b/src/backend/rumBkdConsole.erl index cfd89c5..1302aac 100644 --- a/src/backend/rumBkdConsole.erl +++ b/src/backend/rumBkdConsole.erl @@ -29,7 +29,7 @@ -define(DefOpts, [{use_stderr, false}, {group_leader, false}, {id, ?MODULE}, {formatter, rumFormatter}, {formatter_config, ?DEFAULT_FORMAT_CONFIG}]). -record(state, { - level :: integer(), + level :: rumMaskLevel(), out = user :: user | standard_error | pid(), id :: atom() | {atom(), any()}, formatter :: atom(), diff --git a/src/backend/rumBkdFile.erl b/src/backend/rumBkdFile.erl index 19d98cf..bbe03b5 100644 --- a/src/backend/rumBkdFile.erl +++ b/src/backend/rumBkdFile.erl @@ -32,7 +32,7 @@ -record(state, { fileName :: string(), - level :: integer(), + level :: rumMaskLevel(), fd :: file:io_device() | undefined, inode :: integer() | undefined, ctime :: file:date_time() | undefined, @@ -54,7 +54,7 @@ -type option() :: {file, string()} | -{level, rumLevel()} | +{level, rumAtomLevel()} | {size, non_neg_integer()} | {date, string()} | {count, non_neg_integer()} | @@ -64,7 +64,7 @@ {flush_threshold, non_neg_integer()} | {sync_interval, non_neg_integer()} | {sync_size, non_neg_integer()} | -{sync_on, rumLevel()} | +{sync_on, rumAtomLevel()} | {check_interval, non_neg_integer()} | {formatter, atom()} | {formatter_config, term()}. @@ -147,15 +147,13 @@ handleEvent({mWriteLog, Message}, #state{fileName = FileName, level = Level, sha NewState = case Drop > 0 of true -> - Report = io_lib:format("lager_file_backend dropped ~p messages in the last second that exceeded the limit of ~p messages/sec", [Drop, Hwm]), + Report = eFmt:format("lager_file_backend dropped ~p messages in the last second that exceeded the limit of ~p messages/sec", [Drop, Hwm]), ReportMsg = rumMsg:new(Report, warning, [], []), write(State, rumMsg:timestamp(ReportMsg), rumMsg:severity_as_int(ReportMsg), Formatter:format(ReportMsg, FormatConfig)); _ -> State end, - {ok, write(NewState#state{shaper = NewShaper}, - rumMsg:timestamp(Message), rumMsg:severity_as_int(Message), - Formatter:format(Message, FormatConfig))}; + {ok, write(NewState#state{shaper = NewShaper}, rumMsg:timestamp(Message), rumMsg:severity_as_int(Message), Formatter:format(Message, FormatConfig))}; {false, _, #rumShaper{dropped = D} = NewShaper} -> {ok, State#state{shaper = NewShaper#rumShaper{dropped = D + 1}}} end; @@ -180,12 +178,12 @@ handleInfo({mShaperExpired, Name}, #state{shaper = Shaper, fileName = Name, form "lager_file_backend dropped ~p messages in the last second that exceeded the limit of ~p messages/sec", [Dropped, Shaper#rumShaper.hwm]), ReportMsg = rumMsg:new(Report, warning, [], []), - write(State, rumMsg:timestamp(ReportMsg), - rumMsg:severity_as_int(ReportMsg), Formatter:format(ReportMsg, FormatConfig)) + write(State, rumMsg:timestamp(ReportMsg), rumMsg:severity_as_int(ReportMsg), Formatter:format(ReportMsg, FormatConfig)) end, {ok, State#state{shaper = Shaper#rumShaper{dropped = 0, mps = 0, lastTime = os:timestamp()}}}; -handleInfo(_Info, State) -> - {ok, State}. +handleInfo(_Msg, State) -> + ?ERR("~p info receive unexpect msg ~p ~n ", [?MODULE, _Msg]), + kpS. terminate(_Reason, State) -> %% leaving this function call unmatched makes dialyzer cranky diff --git a/src/eRum.erl b/src/eRum.erl index 0f7f978..2097dc4 100644 --- a/src/eRum.erl +++ b/src/eRum.erl @@ -69,7 +69,7 @@ -record(trace_func_state_v1, { pid :: undefined | pid(), - level :: rumLevel(), + level :: rumAtomLevel(), count :: infinity | pos_integer(), format_string :: string(), timeout :: infinity | pos_integer(), @@ -79,11 +79,11 @@ %% API %% @doc installs a lager trace handler into the target process (using sys:install) at the specified level. --spec install_trace(pid(), rumLevel()) -> ok. +-spec install_trace(pid(), rumAtomLevel()) -> ok. install_trace(Pid, Level) -> install_trace(Pid, Level, []). --spec install_trace(pid(), rumLevel(), [{count, infinity | pos_integer()} | {format_string, string()} | {timeout, timeout()}]) -> ok. +-spec install_trace(pid(), rumAtomLevel(), [{count, infinity | pos_integer()} | {format_string, string()} | {timeout, timeout()}]) -> ok. install_trace(Pid, Level, Options) -> sys:install(Pid, {fun ?MODULE:trace_func/3, trace_state(Pid, Level, Options)}). @@ -134,7 +134,7 @@ md(_) -> erlang:error(badarg). --spec dispatch_log(atom(), rumLevel(), list(), string(), list() | none, pos_integer(), safe | unsafe) -> ok | {error, lager_not_running} | {error, {sink_not_configured, atom()}}. +-spec dispatch_log(atom(), rumAtomLevel(), list(), string(), list() | none, pos_integer(), safe | unsafe) -> ok | {error, lager_not_running} | {error, {sink_not_configured, atom()}}. %% this is the same check that the parse transform bakes into the module at compile time %% see lager_transform (lines 173-216) dispatch_log(Sink, Severity, Metadata, Format, Args, Size, Safety) when is_atom(Severity) -> @@ -215,14 +215,14 @@ do_log(Severity, Metadata, Format, Args, Size, SeverityAsInt, LevelThreshold, Tr %% along with a Sink param?? %% @doc Manually log a message into lager without using the parse transform. --spec log(rumLevel(), pid() | atom() | [tuple(), ...], list()) -> ok | {error, lager_not_running}. +-spec log(rumAtomLevel(), pid() | atom() | [tuple(), ...], list()) -> ok | {error, lager_not_running}. log(Level, Pid, Message) when is_pid(Pid); is_atom(Pid) -> dispatch_log(Level, [{pid, Pid}], Message, [], ?RumDefTruncation); log(Level, Metadata, Message) when is_list(Metadata) -> dispatch_log(Level, Metadata, Message, [], ?RumDefTruncation). %% @doc Manually log a message into lager without using the parse transform. --spec log(rumLevel(), pid() | atom() | [tuple(), ...], string(), list()) -> ok | {error, lager_not_running}. +-spec log(rumAtomLevel(), pid() | atom() | [tuple(), ...], string(), list()) -> ok | {error, lager_not_running}. log(Level, Pid, Format, Args) when is_pid(Pid); is_atom(Pid) -> dispatch_log(Level, [{pid, Pid}], Format, Args, ?RumDefTruncation); log(Level, Metadata, Format, Args) when is_list(Metadata) -> @@ -233,7 +233,7 @@ log_unsafe(Level, Metadata, Format, Args) when is_list(Metadata) -> %% @doc Manually log a message into lager without using the parse transform. --spec log(atom(), rumLevel(), pid() | atom() | [tuple(), ...], string(), list()) -> ok | {error, lager_not_running}. +-spec log(atom(), rumAtomLevel(), pid() | atom() | [tuple(), ...], string(), list()) -> ok | {error, lager_not_running}. log(Sink, Level, Pid, Format, Args) when is_pid(Pid); is_atom(Pid) -> dispatch_log(Sink, Level, [{pid, Pid}], Format, Args, ?RumDefTruncation, safe); log(Sink, Level, Metadata, Format, Args) when is_list(Metadata) -> diff --git a/src/test/lager_common_test_backend.erl b/src/test/lager_common_test_backend.erl index 6225c84..8bec770 100644 --- a/src/test/lager_common_test_backend.erl +++ b/src/test/lager_common_test_backend.erl @@ -15,7 +15,7 @@ %% holds the log messages for retreival on terminate -record(state, { - level :: integer(), + level :: rumMaskLevel(), formatter :: atom(), format_config :: any(), mWriteLog = [] :: list()}). diff --git a/src/utils/rumMsg.erl b/src/utils/rumMsg.erl index 8a27cd4..2c2d1cd 100644 --- a/src/utils/rumMsg.erl +++ b/src/utils/rumMsg.erl @@ -15,13 +15,13 @@ -export_type([rumMsg/0]). %% create with provided timestamp, handy for testing mostly --spec new(list(), erlang:timestamp(), rumLevel(), [tuple()], list()) -> rumMsg(). +-spec new(list(), erlang:timestamp(), rumAtomLevel(), [tuple()], list()) -> rumMsg(). new(Msg, MsTick, Severity, Metadata, Destinations) -> TimeBinStr = rumUtil:msToBinStr(MsTick), #rumMsg{message = Msg, datetime = TimeBinStr, timestamp = MsTick, severity = Severity, metadata = Metadata, destinations = Destinations}. --spec new(list(), rumLevel(), [tuple()], list()) -> rumMsg(). +-spec new(list(), rumAtomLevel(), [tuple()], list()) -> rumMsg(). new(Msg, Severity, Metadata, Destinations) -> NowMs = rumUtil:nowMs(), new(Msg, NowMs, Severity, Metadata, Destinations). @@ -38,11 +38,11 @@ timestamp(Msg) -> datetime(Msg) -> Msg#rumMsg.datetime. --spec severity(rumMsg()) -> rumLevel(). +-spec severity(rumMsg()) -> rumAtomLevel(). severity(Msg) -> Msg#rumMsg.severity. --spec severity_as_int(rumMsg()) -> rumLevelNum(). +-spec severity_as_int(rumMsg()) -> rumMaskLevel(). severity_as_int(Msg) -> rumUtil:levelToNum(Msg#rumMsg.severity). diff --git a/src/utils/rumUtil.erl b/src/utils/rumUtil.erl index ca85ce8..d3b7241 100644 --- a/src/utils/rumUtil.erl +++ b/src/utils/rumUtil.erl @@ -86,12 +86,13 @@ configToMask(Conf) -> Levels = atomCfgToLevels(Conf), levelsToMask(Levels, 0). +-spec levelsToMask([rumAtomLevel()], rumMaskLevel()) -> rumMaskLevel(). levelsToMask([], Acc) -> Acc; levelsToMask([Level | Left], Acc) -> levelsToMask(Left, levelToNum(Level) bor Acc). --spec maskToLevels(non_neg_integer()) -> [rumLevel()]. +-spec maskToLevels(rumMaskLevel()) -> [rumAtomLevel()]. maskToLevels(Mask) -> maskToLevels(?RumLevels, Mask, []). @@ -105,7 +106,7 @@ maskToLevels([Level | Levels], Mask, Acc) -> maskToLevels(Levels, Mask, Acc) end. --spec atomCfgToLevels(atom()) -> [rumLevel()]. +-spec atomCfgToLevels(atom()) -> [rumAtomLevel()]. atomCfgToLevels(Cfg) -> binCfgToLevels(atom_to_binary(Cfg, utf8)). @@ -475,7 +476,7 @@ check_trace(Attrs, {Filter, _Level, Dest}) when is_tuple(Filter) -> [] end. --spec isLoggAble(rumMsg:rumMsg(), non_neg_integer(), term()) -> boolean(). +-spec isLoggAble(rumMsg:rumMsg(), rumMaskLevel(), term()) -> boolean(). isLoggAble(Msg, Mask, MyName) -> (rumMsg:severity_as_int(Msg) band Mask) /= 0 orelse lists:member(MyName, rumMsg:destinations(Msg)). @@ -523,8 +524,7 @@ check_hwm(Shaper = #rumShaper{filter = Filter}, Event) -> check_hwm(Shaper) end. -%% Log rate limit, i.e. high water mark for incoming messages - +%% 日志速率限制S i.e. 即传入消息的高水位标记 check_hwm(Shaper = #rumShaper{hwm = undefined}) -> {true, 0, Shaper}; check_hwm(Shaper = #rumShaper{mps = Mps, hwm = Hwm, lastTime = Last}) when Mps < Hwm ->