Przeglądaj źródła

Cleanup unused handlers when a trace is removed, documentation

pull/24/head
Andrew Thompson 13 lat temu
rodzic
commit
c619263486
4 zmienionych plików z 37 dodań i 8 usunięć
  1. +9
    -0
      README.org
  2. +25
    -5
      src/lager.erl
  3. +2
    -2
      src/lager_console_backend.erl
  4. +1
    -1
      src/lager_file_backend.erl

+ 9
- 0
README.org Wyświetl plik

@ -198,3 +198,12 @@
To view the active log backends and traces, you can use the lager:status()
function. To clear all active traces, you can use lager:clear_all_traces().
To delete a specific trace, store a handle for the trace when you create it,
that you later pass to lager:stop_trace/1:
#+BEGIN_EXAMPLE
{ok, Trace} = lager:trace_file("log/error.log", [{module, mymodule}]),
...
lager:stop_trace(Trace)
#+END_EXAMPLE

+ 25
- 5
src/lager.erl Wyświetl plik

@ -137,16 +137,36 @@ trace_console(Filter, Level) ->
Error
end.
stop_trace(Trace) ->
stop_trace({_Filter, _Level, Target} = Trace) ->
{MinLevel, Traces} = lager_mochiglobal:get(loglevel),
lager_mochiglobal:put(loglevel, {MinLevel, lists:delete(Trace, Traces)}),
%% TODO - somehow determine if the handler is safe to stop, its not
%$ straightforward to tell.
NewTraces = lists:delete(Trace, Traces),
lager_mochiglobal:put(loglevel, {MinLevel, NewTraces}),
case get_loglevel(Target) of
none ->
%% check no other traces point here
case lists:keyfind(Target, 3, NewTraces) of
false ->
gen_event:delete_handler(lager_event, Target, []);
_ ->
ok
end;
_ ->
ok
end,
ok.
clear_all_traces() ->
{MinLevel, _Traces} = lager_mochiglobal:get(loglevel),
lager_mochiglobal:put(loglevel, {MinLevel, []}).
lager_mochiglobal:put(loglevel, {MinLevel, []}),
[begin
case get_loglevel(Handler) of
none ->
gen_event:delete_handler(lager_event, Handler, []);
_ ->
ok
end
end || Handler <- gen_event:which_handlers(lager_event)],
ok.
status() ->
Handlers = gen_event:which_handlers(lager_event),

+ 2
- 2
src/lager_console_backend.erl Wyświetl plik

@ -183,7 +183,7 @@ console_log_test_() ->
500 ->
?assert(true)
end,
ok = lager:trace_console([{module, ?MODULE}]),
{ok, _} = lager:trace_console([{module, ?MODULE}]),
lager:debug("Test message"),
receive
{io_request, From1, ReplyAs1, {put_chars, unicode, Msg1}} ->
@ -210,7 +210,7 @@ console_log_test_() ->
500 ->
?assert(true)
end,
ok = lager:trace_console([{module, ?MODULE}]),
{ok, _} = lager:trace_console([{module, ?MODULE}]),
lager:error("Test message"),
receive
{io_request, From1, ReplyAs1, {put_chars, unicode, Msg1}} ->

+ 1
- 1
src/lager_file_backend.erl Wyświetl plik

@ -376,7 +376,7 @@ filesystem_test_() ->
{"tracing to a dedicated file should work",
fun() ->
file:delete("foo.log"),
lager:trace_file("foo.log", [{module, ?MODULE}]),
{ok, _} = lager:trace_file("foo.log", [{module, ?MODULE}]),
lager:error("Test message"),
{ok, Bin3} = file:read_file("foo.log"),
?assertMatch([_, _, "[error]", _, "Test message\n"], re:split(Bin3, " ", [{return, list}, {parts, 5}]))

Ładowanie…
Anuluj
Zapisz