diff --git a/src/emqx_logger.erl b/src/emqx_logger.erl index 5c6808840..d53256fba 100644 --- a/src/emqx_logger.erl +++ b/src/emqx_logger.erl @@ -138,7 +138,15 @@ critical(Metadata, Format, Args) when is_map(Metadata) -> set_metadata_clientid(<<>>) -> ok; set_metadata_clientid(ClientId) -> - set_proc_metadata(#{clientid => ClientId}). + try + %% try put string format client-id metadata so + %% so the log is not like <<"...">> + Id = unicode:characters_to_list(ClientId, utf8), + set_proc_metadata(#{clientid => Id}) + catch + _: _-> + ok + end. -spec(set_metadata_peername(peername_str()) -> ok). set_metadata_peername(Peername) -> diff --git a/src/emqx_tracer.erl b/src/emqx_tracer.erl index 02f735a75..f135c6f3d 100644 --- a/src/emqx_tracer.erl +++ b/src/emqx_tracer.erl @@ -145,17 +145,19 @@ handler_id(?TOPIC_TRACE(Topic)) -> handler_id(?CLIENT_TRACE(ClientId)) -> list_to_atom(?CLIENT_TRACE_ID(handler_name(ClientId))). -filter_by_meta_key(#{meta:=Meta}=LogEvent, {MetaKey, MetaValue}) -> - case maps:find(MetaKey, Meta) of - {ok, MetaValue} -> LogEvent; - {ok, Topic} when MetaKey =:= topic -> - case emqx_topic:match(Topic, MetaValue) of - true -> LogEvent; - false -> ignore - end; - _ -> ignore +filter_by_meta_key(#{meta := Meta} = Log, {Key, Value}) -> + case is_meta_match(Key, Value, Meta) of + true -> Log; + false -> ignore end. +is_meta_match(clientid, ClientId, #{clientid := ClientIdStr}) -> + ClientId =:= iolist_to_binary(ClientIdStr); +is_meta_match(topic, TopicFilter, #{topic := TopicMeta}) -> + emqx_topic:match(TopicMeta, TopicFilter); +is_meta_match(_, _, _) -> + false. + handler_name(Bin) -> case byte_size(Bin) of Size when Size =< 200 -> binary_to_list(Bin); diff --git a/test/emqx_tracer_SUITE.erl b/test/emqx_tracer_SUITE.erl index 94bac7e3d..f30f911eb 100644 --- a/test/emqx_tracer_SUITE.erl +++ b/test/emqx_tracer_SUITE.erl @@ -32,7 +32,6 @@ init_per_suite(Config) -> end_per_suite(_Config) -> emqx_ct_helpers:stop_apps([]). - t_start_traces(_Config) -> {ok, T} = emqtt:start_link([{host, "localhost"}, @@ -89,4 +88,4 @@ t_start_traces(_Config) -> emqtt:disconnect(T), emqx_logger:set_log_level(warning). - \ No newline at end of file +