Pārlūkot izejas kodu

Merge branch 'master' of https://github.com/EchoTeam/lager into trace_filters

pull/389/head
Mark Allen pirms 8 gadiem
vecāks
revīzija
34d8014319
1 mainītis faili ar 39 papildinājumiem un 27 dzēšanām
  1. +39
    -27
      src/lager_util.erl

+ 39
- 27
src/lager_util.erl Parādīt failu

@ -408,44 +408,56 @@ validate_trace(_) ->
validate_trace_filter(Filter) when is_tuple(Filter), is_atom(element(1, Filter)) =:= false -> validate_trace_filter(Filter) when is_tuple(Filter), is_atom(element(1, Filter)) =:= false ->
false; false;
validate_trace_filter(Filter) ->
case lists:all(fun({Key, '*'}) when is_atom(Key) -> true;
({Key, '!'}) when is_atom(Key) -> true;
({Key, _Value}) when is_atom(Key) -> true;
({Key, '=', _Value}) when is_atom(Key) -> true;
({Key, '<', _Value}) when is_atom(Key) -> true;
({Key, '>', _Value}) when is_atom(Key) -> true;
(_) -> false end, Filter) of
true ->
true;
_ ->
false
end.
validate_trace_filter(Filter) when is_list(Filter) ->
lists:all(fun validate_trace_filter/1, Filter);
validate_trace_filter({Key, '*'}) when is_atom(Key) -> true;
validate_trace_filter({any, L}) when is_list(L) -> lists:all(fun validate_trace_filter/1, L);
validate_trace_filter({all, L}) when is_list(L) -> lists:all(fun validate_trace_filter/1, L);
validate_trace_filter({null, Bool}) when is_boolean(Bool) -> true;
validate_trace_filter({Key, _Value}) when is_atom(Key) -> true;
validate_trace_filter({Key, '=', _Value}) when is_atom(Key) -> true;
validate_trace_filter({Key, '!=', _Value}) when is_atom(Key) -> true;
validate_trace_filter({Key, '<', _Value}) when is_atom(Key) -> true;
validate_trace_filter({Key, '=<', _Value}) when is_atom(Key) -> true;
validate_trace_filter({Key, '>', _Value}) when is_atom(Key) -> true;
validate_trace_filter({Key, '>=', _Value}) when is_atom(Key) -> true;
validate_trace_filter(_) -> false.
trace_all(Query) -> trace_all(Query) ->
glc:all(trace_acc(Query)).
glc:all(trace_acc(Query)).
trace_any(Query) -> trace_any(Query) ->
glc:any(Query).
glc:any(Query).
trace_acc(Query) -> trace_acc(Query) ->
trace_acc(Query, []). trace_acc(Query, []).
trace_acc([], Acc) -> trace_acc([], Acc) ->
lists:reverse(Acc);
lists:reverse(Acc);
trace_acc([{any, L}|T], Acc) ->
trace_acc(T, [glc:any(L)|Acc]);
trace_acc([{all, L}|T], Acc) ->
trace_acc(T, [glc:all(L)|Acc]);
trace_acc([{null, Bool}|T], Acc) ->
trace_acc(T, [glc:null(Bool)|Acc]);
trace_acc([{Key, '*'}|T], Acc) -> trace_acc([{Key, '*'}|T], Acc) ->
trace_acc(T, [glc:wc(Key)|Acc]);
trace_acc(T, [glc:wc(Key)|Acc]);
trace_acc([{Key, '!'}|T], Acc) -> trace_acc([{Key, '!'}|T], Acc) ->
trace_acc(T, [glc:nf(Key)|Acc]);
trace_acc(T, [glc:nf(Key)|Acc]);
trace_acc([{Key, Val}|T], Acc) -> trace_acc([{Key, Val}|T], Acc) ->
trace_acc(T, [glc:eq(Key, Val)|Acc]);
trace_acc(T, [glc:eq(Key, Val)|Acc]);
trace_acc([{Key, '=', Val}|T], Acc) -> trace_acc([{Key, '=', Val}|T], Acc) ->
trace_acc(T, [glc:eq(Key, Val)|Acc]);
trace_acc(T, [glc:eq(Key, Val)|Acc]);
trace_acc([{Key, '!=', Val}|T], Acc) ->
trace_acc(T, [glc:neq(Key, Val)|Acc]);
trace_acc([{Key, '>', Val}|T], Acc) -> trace_acc([{Key, '>', Val}|T], Acc) ->
trace_acc(T, [glc:gt(Key, Val)|Acc]);
trace_acc(T, [glc:gt(Key, Val)|Acc]);
trace_acc([{Key, '>=', Val}|T], Acc) ->
trace_acc(T, [glc:gte(Key, Val)|Acc]);
trace_acc([{Key, '=<', Val}|T], Acc) ->
trace_acc(T, [glc:lte(Key, Val)|Acc]);
trace_acc([{Key, '<', Val}|T], Acc) -> trace_acc([{Key, '<', Val}|T], Acc) ->
trace_acc(T, [glc:lt(Key, Val)|Acc]).
trace_acc(T, [glc:lt(Key, Val)|Acc]).
check_traces(_, _, [], Acc) -> check_traces(_, _, [], Acc) ->
lists:flatten(Acc); lists:flatten(Acc);
@ -464,10 +476,10 @@ check_trace(Attrs, {Filter, _Level, Dest}) when is_tuple(Filter) ->
glc:handle(?DEFAULT_TRACER, Made), glc:handle(?DEFAULT_TRACER, Made),
Match = glc_lib:matches(Filter, Made), Match = glc_lib:matches(Filter, Made),
case Match of case Match of
true ->
Dest;
false ->
[]
true ->
Dest;
false ->
[]
end. end.
-spec is_loggable(lager_msg:lager_msg(), non_neg_integer()|{'mask', non_neg_integer()}, term()) -> boolean(). -spec is_loggable(lager_msg:lager_msg(), non_neg_integer()|{'mask', non_neg_integer()}, term()) -> boolean().

Notiek ielāde…
Atcelt
Saglabāt