From 28ba5cfb761dd68599776567399ac469bb95540c Mon Sep 17 00:00:00 2001 From: SisMaker <1713699517@qq.com> Date: Sat, 13 Mar 2021 23:13:08 +0800 Subject: [PATCH] =?UTF-8?q?ft:=20=E4=BB=A3=E7=A0=81=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/eRum.erl | 71 ++++++++++++++++++++++++++-------------------------- 1 file changed, 35 insertions(+), 36 deletions(-) diff --git a/src/eRum.erl b/src/eRum.erl index 0d4273a..7f6a7de 100644 --- a/src/eRum.erl +++ b/src/eRum.erl @@ -86,21 +86,21 @@ start() -> stop() -> application:stop(eRum). -%% @doc Manually log a message into lager without using the parse transform. +%% @doc Manually log a message into eRum without using the parse transform. -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. +%% @doc Manually log a message into eRum without using the parse transform. -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) -> dispatch_log(Level, Metadata, Format, Args, ?RumDefTruncation). -%% @doc Manually log a message into lager without using the parse transform. +%% @doc Manually log a message into eRum without using the parse transform. -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); @@ -110,14 +110,9 @@ log(Sink, Level, Metadata, Format, Args) when is_list(Metadata) -> log_unsafe(Level, Metadata, Format, Args) when is_list(Metadata) -> dispatch_log(?RumDefSink, Level, Metadata, Format, Args, ?RumDefTruncation, unsafe). -%% backwards compatible with beams compiled with lager 2.x -do_log(Severity, Metadata, Format, Args, Size, SeverityAsInt, LevelThreshold, TraceFilters, SinkPid) -> - do_log(Severity, Metadata, Format, Args, Size, SeverityAsInt, - LevelThreshold, TraceFilters, ?RumDefSink, SinkPid). - -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) +%% see rumTransform (lines 173-216) dispatch_log(Sink, Severity, Metadata, Format, Args, Size, Safety) when is_atom(Severity) -> SeverityAsInt = rumUtil:levelToNum(Severity), case {whereis(Sink), whereis(?RumDefSink), rumConfig:get({Sink, loglevel}, {?LOG_NONE, []})} of @@ -130,6 +125,10 @@ dispatch_log(Sink, Severity, Metadata, Format, Args, Size, Safety) when is_atom( _ -> ok end. +%% 向后兼容使用eRum 2.x编译的梁 +do_log(Severity, Metadata, Format, Args, Size, SeverityAsInt, LevelThreshold, TraceFilters, SinkPid) -> + do_log(Severity, Metadata, Format, Args, Size, SeverityAsInt, LevelThreshold, TraceFilters, ?RumDefSink, SinkPid). + %% @private Should only be called externally from code generated from the parse transform do_log(Severity, Metadata, Format, Args, Size, SeverityAsInt, LevelThreshold, TraceFilters, Sink, SinkPid) when is_atom(Severity) -> FormatFun = fun() -> safe_format_chop(Format, Args, Size) end, @@ -156,13 +155,13 @@ do_log_impl(Severity, Metadata, Format, Args, SeverityAsInt, LevelThreshold, Tra Severity, Metadata, Destinations), case rumConfig:get({Sink, async}, false) of true -> - gen_event:notify(SinkPid, {mWriteLog, LagerMsg}); + gen_emm:info_notify(SinkPid, {mWriteLog, LagerMsg}); false -> - gen_event:sync_notify(SinkPid, {mWriteLog, LagerMsg}) + gen_emm:call_notify(SinkPid, {mWriteLog, LagerMsg}) end, case TraceSinkPid /= undefined of true -> - gen_event:notify(TraceSinkPid, {mWriteLog, LagerMsg}); + gen_emm:info_notify(TraceSinkPid, {mWriteLog, LagerMsg}); false -> ok end; @@ -234,10 +233,11 @@ setLogLevel(Handler, Ident, Level) when is_atom(Level) -> %% @doc Set the loglevel for a particular sink's backend that potentially has %% multiple identifiers. (Use `undefined' if it doesn't have any.) setLogLevel(Sink, Handler, Ident, Level) when is_atom(Level) -> - HandlerArg = case Ident of - undefined -> Handler; - _ -> {Handler, Ident} - end, + HandlerArg = + case Ident of + undefined -> Handler; + _ -> {Handler, Ident} + end, Reply = gen_emm:call(Sink, HandlerArg, {mSetLogLevel, Level}, infinity), updateLogevelCfg(Sink), Reply. @@ -268,21 +268,21 @@ setLogHwm(Handler, Hwm) when is_integer(Hwm) -> %% @doc Set the loghwm for a particular backend. setLogHwm(Sink, Handler, Hwm) when is_integer(Hwm) -> - gen_event:call(Sink, Handler, {mSetLogHwm, Hwm}, infinity). + gen_emm:call(Sink, Handler, {mSetLogHwm, Hwm}, infinity). %% @doc Set the loghwm (log high water mark) for file backends with multiple identifiers setLogHwm(Sink, Handler, Ident, Hwm) when is_integer(Hwm) -> - gen_event:call(Sink, {Handler, Ident}, {mSetLogHwm, Hwm}, infinity). + gen_emm:call(Sink, {Handler, Ident}, {mSetLogHwm, Hwm}, infinity). %% @doc Print stacktrace in human readable form pr_stacktrace(Stacktrace) -> Stacktrace1 = - case application:get_env(lager, reverse_pretty_stacktrace, true) of - true -> - lists:reverse(Stacktrace); - _ -> - Stacktrace - end, + case rumUtil:get_env(reverse_pretty_stacktrace, true) of + true -> + lists:reverse(Stacktrace); + _ -> + Stacktrace + end, pr_stacktrace_(Stacktrace1). pr_stacktrace_(Stacktrace) -> @@ -295,7 +295,7 @@ pr_stacktrace_(Stacktrace) -> Stacktrace). pr_stacktrace(Stacktrace, {Class, Reason}) -> - case application:get_env(lager, reverse_pretty_stacktrace, true) of + case rumUtil:get_env(reverse_pretty_stacktrace, true) of true -> lists:flatten( pr_stacktrace_(lists:reverse(Stacktrace)) ++ "\n" ++ io_lib:format("~s:~p", [Class, Reason])); @@ -344,7 +344,7 @@ trace_file(File, Filter, Options) when is_list(Options) -> trace_file(File, Filter, Level, Options) -> FileName = rumUtil:parsePath(File), - case validate_trace_filters(Filter, Level, {lager_file_backend, FileName}) of + case validate_trace_filters(Filter, Level, {rumBkdFile, FileName}) of {Sink, {ok, Trace}} -> Handlers = rumConfig:global_get(handlers, []), %% check if this file backend is already installed @@ -359,7 +359,7 @@ trace_file(File, Filter, Level, Options) -> {file, FileName}), {level, none}), HandlerInfo = - eRum_app:startHandler(Sink, {lager_file_backend, FileName}, LogFileConfig), + eRum_app:startHandler(Sink, {rumBkdFile, FileName}, LogFileConfig), rumConfig:global_set(handlers, [HandlerInfo | Handlers]), {ok, installed}; {_Watcher, _Handler, Sink} -> @@ -370,7 +370,7 @@ trace_file(File, Filter, Level, Options) -> case Res of {ok, _} -> add_trace_to_loglevel_config(Trace, Sink), - {ok, {{lager_file_backend, FileName}, Filter, Level}}; + {ok, {{rumBkdFile, FileName}, Filter, Level}}; {error, _} = E -> E end; @@ -382,12 +382,12 @@ trace_console(Filter) -> trace_console(Filter, debug). trace_console(Filter, Level) -> - trace(lager_console_backend, Filter, Level). + trace(rumBkdConsole, Filter, Level). trace(Backend, Filter) -> trace(Backend, Filter, debug). -trace({lager_file_backend, File}, Filter, Level) -> +trace({rumBkdFile, File}, Filter, Level) -> trace_file(File, Filter, Level); trace(Backend, Filter, Level) -> @@ -430,7 +430,7 @@ stop_trace_int({_Filter, _Level, Backend} = Trace, Sink) -> %% check no other traces point here case lists:keyfind(Backend, 3, NewTraces) of false -> - gen_event:delete_handler(Sink, Backend, []), + gen_emm:delEpm(Sink, Backend, []), rumConfig:global_set(handlers, lists:keydelete(Backend, 1, rumConfig:global_get(handlers))); @@ -488,7 +488,7 @@ clear_all_traces() -> fun({Handler, _Watcher, Sink}) -> case getLogLevel(Sink, Handler) of none -> - gen_event:delete_handler(Sink, Handler, []), + gen_emm:delEpm(Sink, Handler, []), false; _ -> true @@ -548,9 +548,9 @@ status() -> get_sink_handler_status(Sink, Handler, Level) -> case Handler of - {lager_file_backend, File} -> + {rumBkdFile, File} -> io_lib:format("File ~ts (~s) at level ~p\n", [File, Sink, Level]); - lager_console_backend -> + rumBkdConsole -> io_lib:format("Console (~s) at level ~p\n", [Sink, Level]); _ -> [] @@ -693,7 +693,6 @@ is_record_known(Record, Module) -> end. - %% @private trace_func(#trace_func_state_v1{pid = Pid, level = Level, format_string = Fmt} = FuncState, Event, ProcState) -> _ = eRum:log(Level, Pid, Fmt, [Event, ProcState]), @@ -739,7 +738,7 @@ get_sink_handler_status_unicode_test() -> validate_status(File). validate_status(File) -> - Handler = {lager_file_backend, File}, + Handler = {rumBkdFile, File}, Status = get_sink_handler_status(?RumDefSink, Handler, debug), ?assertNotEqual(nomatch, string:find(Status, File)). -endif.