[thrift] make erlang error logger more efficient

Summary: when omit_fmt is included

Reviewed By: cpiro

Test Plan: sanity checked a service to make sure it ran

Revert Plan: sure

Other Notes: TODO - make reconfiguration work with this


git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@665524 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/lib/erl/src/thrift_logger.erl b/lib/erl/src/thrift_logger.erl
index fefa191..bf1f54b 100644
--- a/lib/erl/src/thrift_logger.erl
+++ b/lib/erl/src/thrift_logger.erl
@@ -19,7 +19,7 @@
 
 %%
 
--record(state, {}).
+-record(state, {omit_formats=gb_sets:empty()}).
 
 -define(GS_TERM_FORMAT, "** Generic server ~p terminating \n** Last message in was ~p~n** When Server state == ~p~n** Reason for termination == ~n** ~p~n").
 
@@ -48,7 +48,8 @@
 %%%
 
 init([]) ->
-    State = #state{},
+    OmitFormats = gb_sets:from_list(config(omit_fmt)),
+    State = #state{omit_formats = OmitFormats},
     {ok, State}.
 
 %%%
@@ -121,7 +122,8 @@
 bin_trim(Term) ->
     Term.
 
-handle_event1({What, _Gleader, {Ref, Format, Data}}, State) when is_list(Format) ->
+handle_event1({What, _Gleader, {Ref, Format, Data}}, State = #state{omit_formats=OmitFormats})
+  when is_list(Format) ->
     Symbol =
         case What of
             error       -> "!!";
@@ -144,12 +146,12 @@
             Message = sformat("DATA DIDN'T MATCH: ~p~n", [TrimData]) ++ sformat(Format, TrimData),
             handle_event2(Symbol, Ref, "", Message, State);
         {_, _} ->
-            case lists:member(Format, config(omit_fmt)) of
+            case gb_sets:is_member(Format, OmitFormats) of
+                true  ->
+                    ok;
                 false ->
                     Message = sformat(Format, bin_trim(Data)),
-                    handle_event2(Symbol, Ref, "", Message, State);
-                true ->
-                    ok
+                    handle_event2(Symbol, Ref, "", Message, State)
             end
     end,
     {ok, State};