diff --git a/apps/emqx_message_validation/src/emqx_message_validation.erl b/apps/emqx_message_validation/src/emqx_message_validation.erl index 86ace1fdf..6ef042405 100644 --- a/apps/emqx_message_validation/src/emqx_message_validation.erl +++ b/apps/emqx_message_validation/src/emqx_message_validation.erl @@ -216,7 +216,7 @@ evaluate_sql_check(Check, Validation, Message) -> } = Check, #{ name := Name, - log_failure_at := FailureLogLevel + log_failure := #{level := FailureLogLevel} } = Validation, {Data, _} = emqx_rule_events:eventmsg_publish(Message), try emqx_rule_runtime:evaluate_select(Fields, Data, Conditions) of @@ -255,7 +255,7 @@ evaluate_schema_check(Check, Validation, #message{payload = Data}) -> #{schema := SerdeName} = Check, #{ name := Name, - log_failure_at := FailureLogLevel + log_failure := #{level := FailureLogLevel} } = Validation, ExtraArgs = case Check of @@ -406,7 +406,7 @@ run_validations(Validations, Message) -> Fun = fun(Validation, Acc) -> #{ name := Name, - log_failure_at := FailureLogLevel + log_failure := #{level := FailureLogLevel} } = Validation, case run_validation(Validation, Message) of ok -> diff --git a/apps/emqx_message_validation/src/emqx_message_validation_schema.erl b/apps/emqx_message_validation/src/emqx_message_validation_schema.erl index ce4f9265d..6218814b0 100644 --- a/apps/emqx_message_validation/src/emqx_message_validation_schema.erl +++ b/apps/emqx_message_validation/src/emqx_message_validation_schema.erl @@ -78,10 +78,10 @@ fields(validation) -> hoconsc:enum([drop, disconnect]), #{desc => ?DESC("failure_action"), required => true} )}, - {log_failure_at, + {log_failure, mk( - hoconsc:enum([error, warning, notice, info, debug]), - #{desc => ?DESC("log_failure_at"), default => info} + ref(log_failure), + #{desc => ?DESC("log_failure_at"), default => #{}} )}, {checks, mk( @@ -100,6 +100,14 @@ fields(validation) -> } )} ]; +fields(log_failure) -> + [ + {level, + mk( + hoconsc:enum([error, warning, notice, info, debug]), + #{desc => ?DESC("log_failure_at"), default => info} + )} + ]; fields(check_sql) -> [ {type, mk(sql, #{default => sql, desc => ?DESC("check_sql_type")})}, diff --git a/apps/emqx_message_validation/test/emqx_message_validation_http_api_SUITE.erl b/apps/emqx_message_validation/test/emqx_message_validation_http_api_SUITE.erl index d8742ec23..57c097005 100644 --- a/apps/emqx_message_validation/test/emqx_message_validation_http_api_SUITE.erl +++ b/apps/emqx_message_validation/test/emqx_message_validation_http_api_SUITE.erl @@ -108,7 +108,7 @@ validation(Name, Checks, Overrides) -> <<"topics">> => <<"t/+">>, <<"strategy">> => <<"all_pass">>, <<"failure_action">> => <<"drop">>, - <<"log_failure_at">> => <<"warning">>, + <<"log_failure">> => #{<<"level">> => <<"warning">>}, <<"checks">> => Checks }, emqx_utils_maps:deep_merge(Default, Overrides). diff --git a/apps/emqx_message_validation/test/emqx_message_validation_tests.erl b/apps/emqx_message_validation/test/emqx_message_validation_tests.erl index a50922ca5..5c0d7d1d8 100644 --- a/apps/emqx_message_validation/test/emqx_message_validation_tests.erl +++ b/apps/emqx_message_validation/test/emqx_message_validation_tests.erl @@ -38,7 +38,7 @@ validation(Name, Checks, Overrides) -> <<"topics">> => <<"t/+">>, <<"strategy">> => <<"all_pass">>, <<"failure_action">> => <<"drop">>, - <<"log_failure_at">> => <<"warning">>, + <<"log_failure">> => #{<<"level">> => <<"warning">>}, <<"checks">> => Checks }, emqx_utils_maps:deep_merge(Default, Overrides). @@ -54,7 +54,7 @@ sql_check(SQL) -> eval_sql(Message, SQL) -> {ok, Check} = emqx_message_validation:parse_sql_check(SQL), - Validation = #{log_failure_at => warning, name => <<"validation">>}, + Validation = #{log_failure => #{level => warning}, name => <<"validation">>}, emqx_message_validation:evaluate_sql_check(Check, Validation, Message). message() ->