Skip to content

Commit

Permalink
Bring some duplicate code together around the loglevel handling.
Browse files Browse the repository at this point in the history
Add add_trace_to_loglevel_config and update_loglevel_config.  These two
handle most of the updates to the loglevel config item, including the
update of the overall logging mask.

This makes minimum_loglevel private.

This doesn't change any behavior -- it just a tidy-up.
  • Loading branch information
Ewan Mellor committed Mar 5, 2013
1 parent 7993c8f commit 228f2b9
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 26 deletions.
44 changes: 21 additions & 23 deletions src/lager.erl
Expand Up @@ -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.
Expand Down Expand Up @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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) ->
Expand Down
4 changes: 1 addition & 3 deletions src/lager_app.erl
Expand Up @@ -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
Expand Down

0 comments on commit 228f2b9

Please sign in to comment.