diff --git a/apps/emqx/src/emqx_trace/emqx_trace_handler.erl b/apps/emqx/src/emqx_trace/emqx_trace_handler.erl
index 7f586f7a4..231fd5e7b 100644
--- a/apps/emqx/src/emqx_trace/emqx_trace_handler.erl
+++ b/apps/emqx/src/emqx_trace/emqx_trace_handler.erl
@@ -44,7 +44,8 @@
-type tracer() :: #{
name := binary(),
type := clientid | topic | ip_address,
- filter := emqx_types:clientid() | emqx_types:topic() | emqx_trace:ip_address()
+ filter := emqx_types:clientid() | emqx_types:topic() | emqx_trace:ip_address(),
+ payload_encode := text | hidden | hex
}.
-define(CONFIG(_LogFile_), #{
@@ -70,7 +71,12 @@
LogFilePath :: string()
) -> ok | {error, term()}.
install(Name, Type, Filter, Level, LogFile) ->
- Who = #{type => Type, filter => ensure_bin(Filter), name => ensure_bin(Name)},
+ Who = #{
+ type => Type,
+ filter => ensure_bin(Filter),
+ name => ensure_bin(Name),
+ payload_encode => payload_encode()
+ },
install(Who, Level, LogFile).
-spec install(
diff --git a/apps/emqx_management/src/emqx_mgmt_api_trace.erl b/apps/emqx_management/src/emqx_mgmt_api_trace.erl
index 73c767a52..619da92f0 100644
--- a/apps/emqx_management/src/emqx_mgmt_api_trace.erl
+++ b/apps/emqx_management/src/emqx_mgmt_api_trace.erl
@@ -273,7 +273,8 @@ fields(trace) ->
"Determine the format of the payload format in the trace file.
\n"
"`text`: Text-based protocol or plain text protocol.\n"
" It is recommended when payload is JSON encoded.
\n"
- "`hex`: Binary hexadecimal encode. It is recommended when payload is a custom binary protocol.
\n"
+ "`hex`: Binary hexadecimal encode."
+ "It is recommended when payload is a custom binary protocol.
\n"
"`hidden`: payload is obfuscated as `******`"
"",
default => text,
diff --git a/changes/ce/feat-10373.en.md b/changes/ce/feat-10373.en.md
new file mode 100644
index 000000000..7609e2a1d
--- /dev/null
+++ b/changes/ce/feat-10373.en.md
@@ -0,0 +1,2 @@
+Deprecate the trace.payload_encode configuration.
+Add payload_encode=[text,hidden,hex] option when creating a trace via HTTP API.