瀏覽代碼

ft: 代码整理

master
SisMaker 4 年之前
父節點
當前提交
c3048029af
共有 8 個檔案被更改,包括 71 行新增72 行删除
  1. +1
    -1
      eRum.sample.config
  2. +46
    -43
      include/eRum.hrl
  3. +1
    -1
      src/crashLog/rumCrashLog.erl
  4. +3
    -3
      src/eRum.erl
  5. +3
    -3
      src/errLogger/rumErrLoggerH.erl
  6. +15
    -16
      src/formatter/rumFormatter.erl
  7. +1
    -4
      src/transform/rumTransform.erl
  8. +1
    -1
      test/lager_metadata_whitelist_test.erl

+ 1
- 1
eRum.sample.config 查看文件

@ -16,7 +16,7 @@
]}, ]},
%% ******************************************** format相关 ****************************************************** %% ******************************************** format相关 ******************************************************
{metadata_whitelist, []},
{metadataWhitelist, []},
{reverse_pretty_stacktrace, true}, {reverse_pretty_stacktrace, true},
%%*********************************************** 异步日志相关 ***************************************************** %%*********************************************** 异步日志相关 *****************************************************

+ 46
- 43
include/eRum.hrl 查看文件

@ -1,3 +1,6 @@
%%
-define(RumAppName, eRum).
%% %%
-define(IIF(Cond, Ret1, Ret2), (case Cond of true -> Ret1; _ -> Ret2 end)). -define(IIF(Cond, Ret1, Ret2), (case Cond of true -> Ret1; _ -> Ret2 end)).
@ -7,12 +10,12 @@
-define(Print(Args), io:format("IMY************~p~n", [Args])). -define(Print(Args), io:format("IMY************~p~n", [Args])).
-define(LAGER_MD_KEY, '__lager_metadata').
-define(TRACE_SINK, '__trace_sink').
-define(ROTATE_TIMEOUT, 100000).
%% key
-define(PdMdKey, pdRumMd).
-define(RumTrackSink, '__trace_sink').
%%
-define(RumAppName, eRum).
%%
-define(ROTATE_TIMEOUT, 100000).
%% %%
-define(RumDefTruncation, 4096). -define(RumDefTruncation, 4096).
@ -20,6 +23,7 @@
-define(RumDefSink, rumEvent). -define(RumDefSink, rumEvent).
-define(RumErrLogSink, error_logger_lager_event). -define(RumErrLogSink, error_logger_lager_event).
%% rumBkdConsole的选项
-type rumConsoleOpt() :: -type rumConsoleOpt() ::
{id, atom() | {atom(), atom()}} | {id, atom() | {atom(), atom()}} |
{use_stderr, boolean()} | {use_stderr, boolean()} |
@ -27,9 +31,10 @@
{formatter, atom()} | {formatter, atom()} |
{formatter_config, list()}. {formatter_config, list()}.
%% rumBkdFile的选项
-type rumFileOpt() :: -type rumFileOpt() ::
{file, string()} |
{level, rumAtomLevel()} |
{file, binary()} |
{level, rumAtomLevel() | atom()} |
{size, non_neg_integer()} | {size, non_neg_integer()} |
{date, string()} | {date, string()} |
{count, non_neg_integer()} | {count, non_neg_integer()} |
@ -44,7 +49,7 @@
{formatter, atom()} | {formatter, atom()} |
{formatter_config, term()}. {formatter_config, term()}.
%% BkdFile默认配置
%% BkdFile选项默认值
-define(RumDefLogLevel, info). -define(RumDefLogLevel, info).
-define(RumDefRotateSize, 10485760). %% 10mb -define(RumDefRotateSize, 10485760). %% 10mb
-define(RumDefRotateDate, "$D0"). %% midnight -define(RumDefRotateDate, "$D0"). %% midnight
@ -60,8 +65,6 @@
-define(RumDefFormatter, rumFormatter). -define(RumDefFormatter, rumFormatter).
-define(RumDefFormatterCfg, []). -define(RumDefFormatterCfg, []).
%% Key
%% %%
-define(RumDefHandler, -define(RumDefHandler,
[ [
@ -82,6 +85,38 @@
{line, ?LINE} | Extras {line, ?LINE} | Extras
]). ]).
-record(rumShaper, {
id :: any()
%%
, hwm = undefined :: 'undefined' | pos_integer()
%%
, mps = 0 :: non_neg_integer()
%%
, lastTime = rumTime:now() :: erlang:timestamp()
%%
, dropped = 0 :: non_neg_integer()
%% If true, flush notify messages from msg queue at overload
%% true
, flushQueue = true :: boolean()
, flushThreshold = 0 :: integer()
%% timer
, timer = make_ref() :: reference()
%% optional filter fun to avoid counting suppressed messages against HWM totals
%% HWM总数计算抑制消息
, filter = fun(_) -> false end :: fun()
}).
-record(rumMsg, {
destinations :: list(),
metadata :: [tuple()],
severity :: rumAtomLevel(),
datetime :: binary(),
timestamp :: non_neg_integer(),
message :: list()
}).
-type rumShaper() :: #rumShaper{}.
-type rumAtomLevel() :: none | debug | info | notice | warning | error | critical | alert | emergency. -type rumAtomLevel() :: none | debug | info | notice | warning | error | critical | alert | emergency.
-type rumMaskLevel() :: 0..256. -type rumMaskLevel() :: 0..256.
@ -122,8 +157,7 @@
-else. -else.
-define(INT_LOG(Level, Format, Args), -define(INT_LOG(Level, Format, Args),
Self = self(), Self = self(),
%% do this in a spawn so we don't cause a deadlock calling gen_event:which_handlers
%% from a gen_event handler
%%gen_event处理程序调用gen_eventwhich_handlers的死锁
spawn(fun() -> spawn(fun() ->
case catch (gen_event:which_handlers(rumEvent)) of case catch (gen_event:which_handlers(rumEvent)) of
X when X == []; X == {'EXIT', noproc}; X == [rumBkdThrottle] -> X when X == []; X == {'EXIT', noproc}; X == [rumBkdThrottle] ->
@ -178,34 +212,3 @@
-define(rumNone(Format, Args), ?rumLog(none, Format, Args, safe)). -define(rumNone(Format, Args), ?rumLog(none, Format, Args, safe)).
-define(rumNone(Metadata, Format, Args), ?rumLog(none, Metadata, Format, Args, safe)). -define(rumNone(Metadata, Format, Args), ?rumLog(none, Metadata, Format, Args, safe)).
-record(rumShaper, {
id :: any()
%%
, hwm = undefined :: 'undefined' | pos_integer()
%%
, mps = 0 :: non_neg_integer()
%%
, lastTime = rumTime:now() :: erlang:timestamp()
%%
, dropped = 0 :: non_neg_integer()
%% If true, flush notify messages from msg queue at overload
%% true
, flushQueue = true :: boolean()
, flushThreshold = 0 :: integer()
%% timer
, timer = make_ref() :: reference()
%% optional filter fun to avoid counting suppressed messages against HWM totals
%% HWM总数计算抑制消息
, filter = fun(_) -> false end :: fun()
}).
-record(rumMsg, {
destinations :: list(),
metadata :: [tuple()],
severity :: rumAtomLevel(),
datetime :: binary(),
timestamp :: non_neg_integer(),
message :: list()
}).
-type rumShaper() :: #rumShaper{}.

+ 1
- 1
src/crashLog/rumCrashLog.erl 查看文件

@ -41,7 +41,7 @@
, maxFileSize :: integer() %% , maxFileSize :: integer() %%
, date :: undefined | string() %% , date :: undefined | string() %%
, count :: integer() %% , count :: integer() %%
, flap = false :: boolean() %%
, flap = false :: boolean() %%
, rotator :: atom() %% , rotator :: atom() %%
}). }).

+ 3
- 3
src/eRum.erl 查看文件

@ -140,7 +140,7 @@ do_log_impl(Severity, Metadata, Format, Args, SeverityAsInt, LevelThreshold, Tra
[] -> [] ->
{[], undefined}; {[], undefined};
_ -> _ ->
{rumUtil:check_traces(Metadata, SeverityAsInt, TraceFilters, []), whereis(?TRACE_SINK)}
{rumUtil:check_traces(Metadata, SeverityAsInt, TraceFilters, []), whereis(?RumTrackSink)}
end, end,
case (LevelThreshold band SeverityAsInt) /= 0 orelse Destinations /= [] of case (LevelThreshold band SeverityAsInt) /= 0 orelse Destinations /= [] of
true -> true ->
@ -187,7 +187,7 @@ dispatch_log(Severity, Metadata, Format, Args, Size) ->
%% @doc Get lager metadata for current process %% @doc Get lager metadata for current process
-spec md() -> [{atom(), any()}]. -spec md() -> [{atom(), any()}].
md() -> md() ->
case erlang:get(?LAGER_MD_KEY) of
case erlang:get(?PdMdKey) of
undefined -> []; undefined -> [];
MD -> MD MD -> MD
end. end.
@ -202,7 +202,7 @@ md(NewMD) when is_list(NewMD) ->
(_) -> false (_) -> false
end, NewMD) of end, NewMD) of
true -> true ->
erlang:put(?LAGER_MD_KEY, NewMD),
erlang:put(?PdMdKey, NewMD),
ok; ok;
false -> false ->
erlang:error(badarg) erlang:error(badarg)

+ 3
- 3
src/errLogger/rumErrLoggerH.erl 查看文件

@ -314,7 +314,7 @@ logEvent(Event, #state{sink = Sink, raw = FormatRaw} = State) ->
end; end;
{error_report, _GL, {Pid, crash_report, [Self, Neighbours]}} -> {error_report, _GL, {Pid, crash_report, [Self, Neighbours]}} ->
?CRASH_LOG(Event), ?CRASH_LOG(Event),
{Md, Formatted} = format_crash_report(Self, Neighbours),
{Md, Formatted} = formatCrashReport(Self, Neighbours),
?LOGMSG(Sink, error, [{pid, Pid} | Md], "CRASH REPORT " ++ Formatted); ?LOGMSG(Sink, error, [{pid, Pid} | Md], "CRASH REPORT " ++ Formatted);
{warning_msg, _GL, {Pid, Fmt, Args}} -> {warning_msg, _GL, {Pid, Fmt, Args}} ->
?LOGFMT(Sink, warning, Pid, Fmt, Args); ?LOGFMT(Sink, warning, Pid, Fmt, Args);
@ -374,7 +374,7 @@ logEvent(Event, #state{sink = Sink, raw = FormatRaw} = State) ->
{ok, State#state{shaper = Shaper#rumShaper{mps = Shaper#rumShaper.mps - 1}}} {ok, State#state{shaper = Shaper#rumShaper{mps = Shaper#rumShaper.mps - 1}}}
end. end.
format_crash_report(Report, Neighbours) ->
formatCrashReport(Report, Neighbours) ->
Name = Name =
case get_value(registered_name, Report, []) of case get_value(registered_name, Report, []) of
[] -> [] ->
@ -389,7 +389,7 @@ format_crash_report(Report, Neighbours) ->
[]; [];
Dict -> Dict ->
%% pull the lager metadata out of the process dictionary, if we can %% pull the lager metadata out of the process dictionary, if we can
get_value('_lager_metadata', Dict, [])
get_value(?PdMdKey, Dict, [])
end, end,
{Class, Reason, Trace} = get_value(error_info, Report), {Class, Reason, Trace} = get_value(error_info, Report),

+ 15
- 16
src/formatter/rumFormatter.erl 查看文件

@ -6,10 +6,10 @@
-include_lib("eunit/include/eunit.hrl"). -include_lib("eunit/include/eunit.hrl").
-endif. -endif.
%%
%% Exported Functions
%%
-export([format/2, format/3]).
-export([
format/2
, format/3
]).
%% %%
%% API Functions %% API Functions
@ -39,16 +39,19 @@
format(Msg, [], Colors) -> format(Msg, [], Colors) ->
format(Msg, [{eol, "\n"}], Colors); format(Msg, [{eol, "\n"}], Colors);
format(Msg, [{eol, EOL}], Colors) -> format(Msg, [{eol, EOL}], Colors) ->
Config = case application:get_env(lager, metadata_whitelist) of
undefined -> config(EOL, []);
{ok, Whitelist} -> config(EOL, Whitelist)
end,
Config =
case rumUtil:get_env(metadataWhitelist, undefined) of
undefined -> config(EOL, []);
Whitelist -> config(EOL, Whitelist)
end,
format(Msg, Config, Colors); format(Msg, Config, Colors);
format(Message, Config, Colors) -> format(Message, Config, Colors) ->
[case V of
color -> output_color(Message, Colors);
_ -> output(V, Message)
end || V <- Config].
[
case V of
color -> output_color(Message, Colors);
_ -> output(V, Message)
end || V <- Config
].
-spec format(rumMsg:rumMsg(), list()) -> any(). -spec format(rumMsg:rumMsg(), list()) -> any().
format(Msg, Config) -> format(Msg, Config) ->
@ -170,16 +173,12 @@ make_printable(A, _W) -> make_printable(A).
%% persistent term was introduced in OTP 21.2, so %% persistent term was introduced in OTP 21.2, so
%% if we're running on an older OTP, just return the %% if we're running on an older OTP, just return the
%% default value. %% default value.
-ifdef(OTP_RELEASE).
maybe_get_persistent_term(Key, Default) -> maybe_get_persistent_term(Key, Default) ->
try try
persistent_term:get(Key, Default) persistent_term:get(Key, Default)
catch catch
_:undef -> Default _:undef -> Default
end. end.
-else.
maybe_get_persistent_term(_Key, Default) -> Default.
-endif.
run_function(Function, Default) -> run_function(Function, Default) ->
try Function() of try Function() of

+ 1
- 4
src/transform/rumTransform.erl 查看文件

@ -66,9 +66,7 @@ walk_body(Acc, []) ->
walk_body(Acc, [H | T]) -> walk_body(Acc, [H | T]) ->
walk_body([transform_statement(H, get(sinks)) | Acc], T). walk_body([transform_statement(H, get(sinks)) | Acc], T).
transform_statement({call, Line, {remote, _Line1, {atom, _Line2, Module},
{atom, _Line3, Function}}, Arguments0} = Stmt,
Sinks) ->
transform_statement({call, Line, {remote, _Line1, {atom, _Line2, Module}, {atom, _Line3, Function}}, Arguments0} = Stmt, Sinks) ->
case lists:member(Module, Sinks) of case lists:member(Module, Sinks) of
true -> true ->
case lists:member(Function, ?RumLevels) of case lists:member(Function, ?RumLevels) of
@ -94,7 +92,6 @@ transform_statement(Stmt, Sinks) when is_list(Stmt) ->
transform_statement(Stmt, _Sinks) -> transform_statement(Stmt, _Sinks) ->
Stmt. Stmt.
add_function_transforms(_Line, DefaultAttrs, []) -> add_function_transforms(_Line, DefaultAttrs, []) ->
DefaultAttrs; DefaultAttrs;
add_function_transforms(Line, DefaultAttrs, [{Atom, on_emit, {Module, Function}} | Remainder]) -> add_function_transforms(Line, DefaultAttrs, [{Atom, on_emit, {Module, Function}} | Remainder]) ->

+ 1
- 1
test/lager_metadata_whitelist_test.erl 查看文件

@ -15,7 +15,7 @@ setup() ->
ok. ok.
cleanup(_) -> cleanup(_) ->
ok = application:unset_env(lager, metadata_whitelist),
ok = application:unset_env(lager, metadataWhitelist),
catch ets:delete(lager_config), %% kill the ets config table with fire catch ets:delete(lager_config), %% kill the ets config table with fire
ok = application:stop(lager), ok = application:stop(lager),
ok = application:stop(goldrush), ok = application:stop(goldrush),

Loading…
取消
儲存