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

chore: log the bad mqtt packet(frame error)

Zhongwen Deng 3 лет назад
Родитель
Сommit
b73d11675e
2 измененных файлов с 6 добавлено и 2 удалено
  1. 1 1
      apps/emqx/src/emqx_logger_textfmt.erl
  2. 5 1
      apps/emqx/src/emqx_packet.erl

+ 1 - 1
apps/emqx/src/emqx_logger_textfmt.erl

@@ -102,4 +102,4 @@ enrich_topic(Msg, _) ->
     Msg.
 
 mfa(undefined) -> undefined;
-mfa({M, F, A}) -> atom_to_list(M) ++ ":" ++ atom_to_list(F) ++ "/" ++ integer_to_list(A).
+mfa({M, F, A}) -> [atom_to_list(M), ":", atom_to_list(F), "/" ++ integer_to_list(A)].

+ 5 - 1
apps/emqx/src/emqx_packet.erl

@@ -479,7 +479,11 @@ format(#mqtt_packet{header = Header, variable = Variable, payload = Payload}, Pa
     case format_variable(Variable, Payload, PayloadEncode) of
         "" -> [HeaderIO, ")"];
         VarIO -> [HeaderIO, ", ", VarIO, ")"]
-    end.
+    end;
+%% receive a frame error packet, such as {frame_error,frame_too_large} or
+%% {frame_error,#{expected => <<"'MQTT' or 'MQIsdp'">>,hint => invalid_proto_name,received => <<"bad_name">>}}
+format(FrameError, _PayloadEncode) ->
+    lists:flatten(io_lib:format("~tp", [FrameError])).
 
 format_header(#mqtt_packet_header{
     type = Type,