diff --git a/src/lager.erl b/src/lager.erl index 2f67fdc..05f6347 100644 --- a/src/lager.erl +++ b/src/lager.erl @@ -26,7 +26,7 @@ trace/2, trace/3, trace_file/2, trace_file/3, trace_console/1, trace_console/2, clear_all_traces/0, stop_trace/1, status/0, get_loglevel/1, set_loglevel/2, set_loglevel/3, get_loglevels/0, - minimum_loglevel/1, posix_error/1, + update_loglevel_config/0, posix_error/1, safe_format/3, safe_format_chop/3,dispatch_log/5, pr/2]). -type log_level() :: debug | info | notice | warning | error | critical | alert | emergency. @@ -121,14 +121,7 @@ trace_file(File, Filter, Level) -> end, case Res of {ok, _} -> - %% install the trace. - {MinLevel, Traces} = lager_config:get(loglevel), - case lists:member(Trace, Traces) of - false -> - lager_config:set(loglevel, {MinLevel, [Trace|Traces]}); - _ -> - ok - end, + add_trace_to_loglevel_config(Trace), {ok, Trace}; {error, _} = E -> E @@ -150,12 +143,7 @@ trace(Backend, Filter, Level) -> Trace0 = {Filter, Level, Backend}, case lager_util:validate_trace(Trace0) of {ok, Trace} -> - {MinLevel, Traces} = lager_config:get(loglevel), - case lists:member(Trace, Traces) of - false -> - lager_config:set(loglevel, {MinLevel, [Trace|Traces]}); - _ -> ok - end, + add_trace_to_loglevel_config(Trace), {ok, Trace}; Error -> Error @@ -225,20 +213,14 @@ status() -> %% @doc Set the loglevel for a particular backend. set_loglevel(Handler, Level) when is_atom(Level) -> Reply = gen_event:call(lager_event, Handler, {set_loglevel, Level}, infinity), - %% recalculate min log level - {_, Traces} = lager_config:get(loglevel), - MinLog = minimum_loglevel(get_loglevels()), - lager_config:set(loglevel, {MinLog, Traces}), + update_loglevel_config(), Reply. %% @doc Set the loglevel for a particular backend that has multiple identifiers %% (eg. the file backend). set_loglevel(Handler, Ident, Level) when is_atom(Level) -> Reply = gen_event:call(lager_event, {Handler, Ident}, {set_loglevel, Level}, infinity), - %% recalculate min log level - {_, Traces} = lager_config:get(loglevel), - MinLog = minimum_loglevel(get_loglevels()), - lager_config:set(loglevel, {MinLog, Traces}), + update_loglevel_config(), Reply. %% @doc Get the loglevel for a particular backend. In the case that the backend @@ -270,6 +252,22 @@ get_loglevels() -> [gen_event:call(lager_event, Handler, get_loglevel, infinity) || Handler <- gen_event:which_handlers(lager_event)]. +%% @private +add_trace_to_loglevel_config(Trace) -> + {MinLevel, Traces} = lager_config:get(loglevel), + case lists:member(Trace, Traces) of + false -> + lager_config:set(loglevel, {MinLevel, [Trace|Traces]}); + _ -> + ok + end. + +%% @doc recalculate min log level +update_loglevel_config() -> + {_, Traces} = lager_config:get(loglevel), + MinLog = minimum_loglevel(get_loglevels()), + lager_config:set(loglevel, {MinLog, Traces}). + %% @private minimum_loglevel(Levels) -> lists:foldl(fun({mask, Mask}, Acc) -> diff --git a/src/lager_app.erl b/src/lager_app.erl index 056ee49..082a991 100644 --- a/src/lager_app.erl +++ b/src/lager_app.erl @@ -48,9 +48,7 @@ start(_StartType, _StartArgs) -> {Module, Config} <- expand_handlers(Handlers)], %% mask the messages we have no use for - MinLog = lager:minimum_loglevel(lager:get_loglevels()), - {_, Traces} = lager_config:get(loglevel), - lager_config:set(loglevel, {MinLog, Traces}), + lager:update_loglevel_config(), SavedHandlers = case application:get_env(lager, error_logger_redirect) of