diff --git a/src/lager.erl b/src/lager.erl index f3afe2c..c4508b1 100644 --- a/src/lager.erl +++ b/src/lager.erl @@ -300,25 +300,36 @@ clear_all_traces() -> end end, Handlers). -%% XXX Needs heavy revision +find_traces(Sinks) -> + lists:foldl(fun(S, Acc) -> + {_Level, Traces} = lager_config:get({S, loglevel}), + Acc ++ lists:map(fun(T) -> {S, T} end, Traces) + end, + [], + Sinks). + status() -> Handlers = lager_config:global_get(handlers, []), - TraceCount = case length(element(2, lager_config:get(loglevel))) of + Sinks = lists:sort(name_all_sinks()), + Traces = find_traces(Sinks), + TraceCount = case length(Traces) of 0 -> 1; N -> N end, Status = ["Lager status:\n", [begin - Level = get_loglevel(Handler), + Level = get_loglevel(Sink, Handler), case Handler of {lager_file_backend, File} -> - io_lib:format("File ~s at level ~p\n", [File, Level]); + io_lib:format("File ~s (~s) at level ~p\n", [File, Sink, Level]); lager_console_backend -> - io_lib:format("Console at level ~p\n", [Level]); + io_lib:format("Console (~s) at level ~p\n", [Sink, Level]); _ -> [] end - end || Handler <- Handlers], + end || {Handler, _Watcher, Sink} <- lists:sort(fun({_, _, S1}, + {_, _, S2}) -> S1 =< S2 end, + Handlers)], "Active Traces:\n", [begin LevelName = case Level of @@ -330,9 +341,9 @@ status() -> Num -> lager_util:num_to_level(Num) end, - io_lib:format("Tracing messages matching ~p at level ~p to ~p\n", - [Filter, LevelName, Destination]) - end || {Filter, Level, Destination} <- element(2, lager_config:get(loglevel))], + io_lib:format("Tracing messages matching ~p (sink ~s) at level ~p to ~p\n", + [Filter, Sink, LevelName, Destination]) + end || {Sink, {Filter, Level, Destination}} <- Traces], [ "Tracing Reductions:\n", case ?DEFAULT_TRACER:info('query') of