SisMaker 4 лет назад
Родитель
Сommit
6fca75e5fb
3 измененных файлов: 36 добавлений и 57 удалений
  1. +3
    -4
      include/eRum.hrl
  2. +1
    -2
      src/eRum.erl
  3. +32
    -51
      src/eRum_app.erl

+ 3
- 4
include/eRum.hrl Просмотреть файл

@ -11,7 +11,6 @@
-define(RumErrLogSink, error_logger_lager_event).
%% Key
-define(RumPdLogNames, rumPdLogNames).
-define(RumBackendThrottle, rumBackendThrottle).
@ -19,9 +18,9 @@
%%
-define(RumDefHandler,
[
{lager_console_backend, [{level, info}]},
{lager_file_backend, [{file, "error.log"}, {level, error}, {size, 10485760}, {date, "$D0"}, {count, 5}]},
{lager_file_backend, [{file, "console.log"}, {level, info}, {size, 10485760}, {date, "$D0"}, {count, 5}]}
{rumBackendConsole, [{level, info}]},
{rumBackendFile, [{file, "error.log"}, {level, error}, {size, 10485760}, {date, "$D0"}, {count, 5}]},
{rumBackendFile, [{file, "console.log"}, {level, info}, {size, 10485760}, {date, "$D0"}, {count, 5}]}
]).
%%

+ 1
- 2
src/eRum.erl Просмотреть файл

@ -277,8 +277,7 @@ trace_file(File, Filter, Level, Options) ->
{file, FileName}),
{level, none}),
HandlerInfo =
lager_app:start_handler(Sink, {lager_file_backend, FileName},
LogFileConfig),
eRum_app:startHandler(Sink, {lager_file_backend, FileName}, LogFileConfig),
rumConfig:global_set(handlers, [HandlerInfo | Handlers]),
{ok, installed};
{_Watcher, _Handler, Sink} ->

+ 32
- 51
src/eRum_app.erl Просмотреть файл

@ -9,7 +9,7 @@
, start/2
, stop/1
, doStart/1
, start_handler/3
, startHandler/3
, configure_sink/2
]).
@ -32,16 +32,12 @@ boot() ->
tryInstallKiller(rumUtil:get_env(killerHwm, undefined), rumUtil:get_env(killerReTime, undefined), ?RumDefSink),
start_handlers(rumUtil:get_env(handlers, ?RumDefHandler), ?RumDefSink),
tryStartHandlers(rumUtil:get_env(handlers, ?RumDefHandler), ?RumDefSink),
eRum:update_loglevel_config(?RumDefSink),
SavedHandlers = start_error_logger_handler(
application:get_env(lager, error_logger_redirect, true),
interpret_hwm(application:get_env(lager, error_logger_hwm, 0)),
application:get_env(lager, error_logger_whitelist, [])
),
SavedHandlers = start_error_logger_handler(rumUtil:get_env(error_logger_redirect, true), rumUtil:get_env(error_logger_hwm, 0), rumUtil:get_env(error_logger_whitelist, [])),
eRum:update_loglevel_config(?RumDefSink),
SavedHandlers.
doStart('__traces') ->
@ -88,52 +84,37 @@ tryInstallKiller(HWM, ReTime, Sink) ->
end,
ok.
start_handlers(undefined, _Sink) -> ok;
start_handlers(Handlers, _Sink) when not is_list(Handlers) ->
error_logger:error_msg("Invalid value for 'handlers' (must be list): ~p~n", [Handlers]),
throw({error, bad_config});
start_handlers(Sink, Handlers) ->
%% handlers failing to start are handled in the handler_watcher
rumConfig:global_set(handlers,
rumConfig:global_get(handlers, []) ++
lists:map(
fun
({Module, Config}) ->
check_handler_config(Module, Config),
start_handler(Sink, Module, Config);
(_) ->
throw({error, bad_config})
end,
expand_handlers(Handlers))),
tryStartHandlers(undefined, _Sink) -> ok;
tryStartHandlers(Handlers, Sink) ->
%% handler_watcher中处理
NewHandler = doStartHandlers(Handlers, Sink, [], []),
rumConfig:global_set(handlers, rumConfig:global_get(handlers, []) ++ NewHandler),
ok.
start_handler(Sink, Module, Config) ->
{ok, Watcher} = supervisor:start_child(lager_handler_watcher_sup, [Sink, Module, Config]),
{Module, Watcher, Sink}.
check_handler_config({lager_file_backend, F}, Config) when is_list(Config); is_tuple(Config) ->
Fs =
case get(?RumPdLogNames) of
undefined -> ordsets:new();
X -> X
doStartHandlers([], _Sink, _NameAcc, HandlerAcc) ->
HandlerAcc;
doStartHandlers([OneHandler | Handlers], Sink, NameAcc, HandlerAcc) ->
{Module, Options} = expand_handlers(OneHandler),
NewNameAcc =
case Module of
{rumBackendFile, F} ->
case lists:member(F, NameAcc) of
true ->
error_logger:error_msg("Cannot have same file (~p) in multiple file backends~n", [F]),
throw({error, bad_config});
_ ->
[F | NameAcc]
end;
_ ->
NameAcc
end,
case ordsets:is_element(F, Fs) of
true ->
error_logger:error_msg(
"Cannot have same file (~p) in multiple file backends~n", [F]),
throw({error, bad_config});
false ->
put(?RumPdLogNames,
ordsets:add_element(F, Fs))
end,
ok;
check_handler_config(_Handler, Config) when is_list(Config) orelse is_atom(Config) ->
ok;
check_handler_config(Handler, _BadConfig) ->
throw({error, {bad_config, Handler}}).
clean_up_config_checks() ->
erase(?RumPdLogNames).
HandlerRet = startHandler(Sink, Module, Options),
doStartHandlers(Handlers, Sink, NewNameAcc, [HandlerRet | HandlerAcc]).
startHandler(Sink, Module, Config) ->
{ok, Watcher} = supervisor:start_child(rumHWatcherSup, [Sink, Module, Config]),
{Module, Watcher, Sink}.
interpret_hwm(undefined) ->
undefined;
@ -210,7 +191,7 @@ configure_sink(Sink, SinkDef) ->
tryStartAsyncMgr(Sink, proplists:get_value(asyncThreshold, SinkDef), proplists:get_value(asyncThresholdWindow, SinkDef)),
_ = tryInstallKiller(Sink, proplists:get_value(killerHwm, SinkDef),
proplists:get_value(killerReTime, SinkDef)),
start_handlers(Sink, proplists:get_value(handlers, SinkDef, [])),
tryStartHandlers(proplists:get_value(handlers, SinkDef, []), Sink),
eRum:update_loglevel_config(Sink).

Загрузка…
Отмена
Сохранить