From 02a0faa1d6bff2f10883bcc7d59e6cf912e8d0ea Mon Sep 17 00:00:00 2001 From: Serge Tupchii Date: Wed, 24 Apr 2024 16:01:32 +0300 Subject: [PATCH] refactor: avoid evaluating Data more than once in SLOG_THROTTE macro --- apps/emqx/include/logger.hrl | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/apps/emqx/include/logger.hrl b/apps/emqx/include/logger.hrl index 7bd542b0d..31fe0e36a 100644 --- a/apps/emqx/include/logger.hrl +++ b/apps/emqx/include/logger.hrl @@ -44,11 +44,20 @@ ). -define(SLOG_THROTTLE(Level, Data, Meta), - case emqx_log_throttler:allow(maps:get(msg, Data)) of + case logger:allow(Level, ?MODULE) of true -> - ?SLOG(Level, Data, Meta); + (fun(#{msg := __Msg} = __Data) -> + case emqx_log_throttler:allow(__Msg) of + true -> + logger:log(Level, __Data, Meta); + false -> + ?_DO_TRACE(Level, __Msg, maps:merge(__Data, Meta)) + end + end)( + Data + ); false -> - ?_DO_TRACE(Level, maps:get(msg, Data), maps:merge(Data, Meta)) + ok end ).