Просмотр исходного кода

Merge pull request #251 from Vagabond/fix/make_trace_stop_trace_api_consistent_cleanup

Fix/make trace stop trace api consistent cleanup
pull/208/merge
Andrew Thompson 10 лет назад
Родитель
Сommit
2d3ed2e722
1 измененных файлов: 23 добавлений и 9 удалений
  1. +23
    -9
      src/lager.erl

+ 23
- 9
src/lager.erl Просмотреть файл

@ -27,7 +27,7 @@
log/3, log/4,
md/0, md/1,
trace/2, trace/3, trace_file/2, trace_file/3, trace_file/4, trace_console/1, trace_console/2,
clear_all_traces/0, stop_trace/1, status/0,
clear_all_traces/0, stop_trace/1, stop_trace/3, status/0,
get_loglevel/1, set_loglevel/2, set_loglevel/3, get_loglevels/0,
update_loglevel_config/0, posix_error/1,
safe_format/3, safe_format_chop/3, dispatch_log/5, dispatch_log/9,
@ -148,7 +148,7 @@ trace_file(File, Filter, Level) when is_atom(Level) ->
trace_file(File, Filter, Options) when is_list(Options) ->
trace_file(File, Filter, debug, Options).
trace_file(File, Filter, Level, Options) ->
Trace0 = {Filter, Level, {lager_file_backend, File}},
case lager_util:validate_trace(Trace0) of
@ -167,7 +167,7 @@ trace_file(File, Filter, Level, Options) ->
case Res of
{ok, _} ->
add_trace_to_loglevel_config(Trace),
{ok, Trace};
{ok, {{lager_file_backend, File}, Filter, Level}};
{error, _} = E ->
E
end;
@ -175,7 +175,6 @@ trace_file(File, Filter, Level, Options) ->
Error
end.
trace_console(Filter) ->
trace_console(Filter, debug).
@ -185,28 +184,43 @@ trace_console(Filter, Level) ->
trace(Backend, Filter) ->
trace(Backend, Filter, debug).
trace({lager_file_backend, File}, Filter, Level) ->
trace_file(File, Filter, Level);
trace(Backend, Filter, Level) ->
Trace0 = {Filter, Level, Backend},
case lager_util:validate_trace(Trace0) of
{ok, Trace} ->
add_trace_to_loglevel_config(Trace),
{ok, Trace};
{ok, {Backend, Filter, Level}};
Error ->
Error
end.
stop_trace({_Filter, _Level, Target} = Trace) ->
stop_trace(Backend, Filter, Level) ->
Trace0 = {Filter, Level, Backend},
case lager_util:validate_trace(Trace0) of
{ok, Trace} ->
stop_trace_int(Trace);
Error ->
Error
end.
stop_trace({Backend, Filter, Level}) ->
stop_trace(Backend, Filter, Level).
stop_trace_int({Backend, _Filter, _Level} = Trace) ->
{Level, Traces} = lager_config:get(loglevel),
NewTraces = lists:delete(Trace, Traces),
_ = lager_util:trace_filter([ element(1, T) || T <- NewTraces ]),
%MinLevel = minimum_loglevel(get_loglevels() ++ get_trace_levels(NewTraces)),
lager_config:set(loglevel, {Level, NewTraces}),
case get_loglevel(Target) of
case get_loglevel(Backend) of
none ->
%% check no other traces point here
case lists:keyfind(Target, 3, NewTraces) of
case lists:keyfind(Backend, 3, NewTraces) of
false ->
gen_event:delete_handler(lager_event, Target, []);
gen_event:delete_handler(lager_event, Backend, []);
_ ->
ok
end;

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