From 64a455bf8ee1180e81aed3c92a5033532b8ddc79 Mon Sep 17 00:00:00 2001 From: DDDHuang <44492639+DDDHuang@users.noreply.github.com> Date: Thu, 26 May 2022 14:14:18 +0800 Subject: [PATCH] fix: old date format style example & some code format --- apps/emqx_rule_engine/src/emqx_rule_funcs.erl | 2 +- .../test/emqx_rule_funcs_SUITE.erl | 6 +- etc/emqx.conf | 4 + src/emqx.appup.src | 5 - src/emqx_calendar.erl | 101 ++++++++---------- src/emqx_logger_textfmt.erl | 3 +- 6 files changed, 55 insertions(+), 66 deletions(-) diff --git a/apps/emqx_rule_engine/src/emqx_rule_funcs.erl b/apps/emqx_rule_engine/src/emqx_rule_funcs.erl index a8b347f5d..18e61967e 100644 --- a/apps/emqx_rule_engine/src/emqx_rule_funcs.erl +++ b/apps/emqx_rule_engine/src/emqx_rule_funcs.erl @@ -955,7 +955,7 @@ date_to_unix_ts(TimeUnit, Offset, FormatString, InputString) -> Unit = time_unit(TimeUnit), OffsetSecond = emqx_calendar:offset_second(Offset), OffsetDelta = erlang:convert_time_unit(OffsetSecond, second, Unit), - OffsetDelta + date_to_unix_ts(Unit, FormatString, InputString). + date_to_unix_ts(Unit, FormatString, InputString) - OffsetDelta. mongo_date() -> erlang:timestamp(). diff --git a/apps/emqx_rule_engine/test/emqx_rule_funcs_SUITE.erl b/apps/emqx_rule_engine/test/emqx_rule_funcs_SUITE.erl index fe9cf688b..aa2781e8c 100644 --- a/apps/emqx_rule_engine/test/emqx_rule_funcs_SUITE.erl +++ b/apps/emqx_rule_engine/test/emqx_rule_funcs_SUITE.erl @@ -714,10 +714,9 @@ t_format_date_funcs(_) -> prop_format_date_fun() -> Args1 = [<<"second">>, <<"+07:00">>, <<"%m--%d--%Y---%H:%M:%S%z">>], - Args1DTUS = [<<"second">>, 0, <<"%m--%d--%Y---%H:%M:%S%z">>], ?FORALL(S, erlang:system_time(second), S == apply_func(date_to_unix_ts, - Args1DTUS ++ [apply_func(format_date, + Args1 ++ [apply_func(format_date, Args1 ++ [S])])), Args2 = [<<"millisecond">>, <<"+04:00">>, <<"--%m--%d--%Y---%H:%M:%S:%3N%z">>], Args2DTUS = [<<"millisecond">>, <<"--%m--%d--%Y---%H:%M:%S:%3N%z">>], @@ -735,8 +734,7 @@ prop_format_date_fun() -> Second = erlang:system_time(second), Args3 = [<<"second">>, <<"+04:00">>, <<"--%m--%d--%Y---%H:%M:%S">>, Second], Formatters3 = apply_func(format_date, Args3), - % -04:00 remove offset - Args3DTUS = [<<"second">>, <<"-04:00">>, <<"--%m--%d--%Y---%H:%M:%S">>, Formatters3], + Args3DTUS = [<<"second">>, <<"+04:00">>, <<"--%m--%d--%Y---%H:%M:%S">>, Formatters3], Second == apply_func(date_to_unix_ts, Args3DTUS). apply_func(Name, Args) when is_atom(Name) -> diff --git a/etc/emqx.conf b/etc/emqx.conf index 161f9fc2b..0f8f93a91 100644 --- a/etc/emqx.conf +++ b/etc/emqx.conf @@ -479,6 +479,10 @@ log.formatter = text ## ## For example: ## log.formatter.text.date.format = %Y-%m-%dT%H:%M:%S.%6N %:z +## +## Before 4.2, the default date format was: +## log.formatter.text.date.format = %Y-%m-%d %H:%M:%S.%3N +## ## Default: rfc3339 # log.formatter.text.date.format = rfc3339 diff --git a/src/emqx.appup.src b/src/emqx.appup.src index 1f1443f37..9dbf47f6f 100644 --- a/src/emqx.appup.src +++ b/src/emqx.appup.src @@ -591,7 +591,6 @@ {"4.3.12", [{delete_module,emqx_calendar}, {load_module,emqx_logger_textfmt,brutal_purge,soft_purge,[]}, - {load_module,emqx_alarm,brutal_purge,soft_purge,[]}, {load_module,emqx_alarm_handler,brutal_purge,soft_purge,[]}, {load_module,emqx_access_rule,brutal_purge,soft_purge,[]}, {load_module,emqx_shared_sub,brutal_purge,soft_purge,[]}, @@ -641,7 +640,6 @@ {load_module,emqx_vm,brutal_purge,soft_purge,[]}, {load_module,emqx_sys_mon,brutal_purge,soft_purge,[]}, {load_module,emqx_frame,brutal_purge,soft_purge,[]}, - {load_module,emqx_alarm,brutal_purge,soft_purge,[]}, {load_module,emqx_os_mon,brutal_purge,soft_purge,[]}, {load_module,emqx,brutal_purge,soft_purge,[]}, {load_module,emqx_app,brutal_purge,soft_purge,[]}, @@ -673,7 +671,6 @@ {load_module,emqx_http_lib,brutal_purge,soft_purge,[]}, {load_module,emqx_app,brutal_purge,soft_purge,[]}, {load_module,emqx_frame,brutal_purge,soft_purge,[]}, - {load_module,emqx_alarm,brutal_purge,soft_purge,[]}, {load_module,emqx_os_mon,brutal_purge,soft_purge,[]}, {load_module,emqx,brutal_purge,soft_purge,[]}, {load_module,emqx_connection,brutal_purge,soft_purge,[]}, @@ -708,7 +705,6 @@ {load_module,emqx_mqueue,brutal_purge,soft_purge,[]}, {load_module,emqx_frame,brutal_purge,soft_purge,[]}, {load_module,emqx_rpc,brutal_purge,soft_purge,[]}, - {load_module,emqx_alarm,brutal_purge,soft_purge,[]}, {load_module,emqx_os_mon,brutal_purge,soft_purge,[]}, {load_module,emqx,brutal_purge,soft_purge,[]}, {load_module,emqx_app,brutal_purge,soft_purge,[]}, @@ -743,7 +739,6 @@ {load_module,emqx_mqueue,brutal_purge,soft_purge,[]}, {load_module,emqx_frame,brutal_purge,soft_purge,[]}, {load_module,emqx_rpc,brutal_purge,soft_purge,[]}, - {load_module,emqx_alarm,brutal_purge,soft_purge,[]}, {load_module,emqx_os_mon,brutal_purge,soft_purge,[]}, {load_module,emqx,brutal_purge,soft_purge,[]}, {load_module,emqx_app,brutal_purge,soft_purge,[]}, diff --git a/src/emqx_calendar.erl b/src/emqx_calendar.erl index 7f9faf3be..0c094df81 100644 --- a/src/emqx_calendar.erl +++ b/src/emqx_calendar.erl @@ -55,7 +55,7 @@ formatter(FormatterBin) when is_binary(FormatterBin) -> do_formatter(FormatterBin, []). offset_second(Offset) -> - do_offset_second(Offset). + offset_second_(Offset). format(Time, Unit, Formatter) -> format(Time, Unit, undefined, Formatter). @@ -105,24 +105,24 @@ do_formatter(<>, [Str | Formatter]) when is_list(Str) -> do_formatter(Tail, [lists:append(Str, [Char]) | Formatter]); do_formatter(<>, Formatter) -> do_formatter(Tail, [[Char] | Formatter]). -do_offset_second(OffsetSecond) when is_integer(OffsetSecond) -> OffsetSecond; -do_offset_second(undefined) -> 0; -do_offset_second("local") -> do_offset_second(local); -do_offset_second(<<"local">>) -> do_offset_second(local); -do_offset_second(local) -> +offset_second_(OffsetSecond) when is_integer(OffsetSecond) -> OffsetSecond; +offset_second_(undefined) -> 0; +offset_second_("local") -> offset_second_(local); +offset_second_(<<"local">>) -> offset_second_(local); +offset_second_(local) -> UniversalTime = calendar:system_time_to_universal_time(erlang:system_time(second), second), LocalTime = erlang:universaltime_to_localtime(UniversalTime), LocalSecs = calendar:datetime_to_gregorian_seconds(LocalTime), UniversalSecs = calendar:datetime_to_gregorian_seconds(UniversalTime), LocalSecs - UniversalSecs; -do_offset_second(Offset) when is_binary(Offset) -> - do_offset_second(erlang:binary_to_list(Offset)); -do_offset_second("Z") -> 0; -do_offset_second("z") -> 0; -do_offset_second(Offset) when is_list(Offset) -> +offset_second_(Offset) when is_binary(Offset) -> + offset_second_(erlang:binary_to_list(Offset)); +offset_second_("Z") -> 0; +offset_second_("z") -> 0; +offset_second_(Offset) when is_list(Offset) -> Sign = hd(Offset), ((Sign == $+) orelse (Sign == $-)) - orelse error({bad_zone, Offset}), + orelse error({bad_time_offset, Offset}), Signs = #{$+ => 1, $- => -1}, PosNeg = maps:get(Sign, Signs), [Sign | HM] = Offset, @@ -135,14 +135,14 @@ do_offset_second(Offset) when is_list(Offset) -> [HHMM] when erlang:length(HHMM) == 4 -> {string:sub_string(HHMM, 1,2), string:sub_string(HHMM, 3,4), "0"}; _ -> - error({bad_zone, Offset}) + error({bad_time_offset, Offset}) end, Hour = erlang:list_to_integer(HourStr), Minute = erlang:list_to_integer(MinuteStr), Second = erlang:list_to_integer(SecondStr), - (Hour =< 23) orelse error({bad_hour, Hour}), - (Minute =< 59) orelse error({bad_minute, Minute}), - (Second =< 59) orelse error({bad_second, Second}), + (Hour =< 23) orelse error({bad_time_offset_hour, Hour}), + (Minute =< 59) orelse error({bad_time_offset_minute, Minute}), + (Second =< 59) orelse error({bad_time_offset_second, Second}), PosNeg * (Hour * 3600 + Minute * 60 + Second). do_format(Time, Unit, Offset, Formatter) -> @@ -345,7 +345,7 @@ padding(Data, _Len) -> do_parse(DateStr, Unit, Formatter) -> DateInfo = do_parse_date_str(DateStr, Formatter, #{}), - {Precise, PrecisionUnit} = precise(DateInfo), + {Precise, PrecisionUnit} = precision(DateInfo), Counter = fun (year, V, Res) -> @@ -384,11 +384,11 @@ do_parse(DateStr, Unit, Formatter) -> Count = maps:fold(Counter, 0, DateInfo) - (?SECONDS_PER_DAY * Precise), erlang:convert_time_unit(Count, PrecisionUnit, Unit). -precise(#{nanosecond := _}) -> {1000_000_000, nanosecond}; -precise(#{microsecond := _}) -> {1000_000, microsecond}; -precise(#{millisecond := _}) -> {1000, millisecond}; -precise(#{second := _}) -> {1, second}; -precise(_) -> {1, second}. +precision(#{nanosecond := _}) -> {1000_000_000, nanosecond}; +precision(#{microsecond := _}) -> {1000_000, microsecond}; +precision(#{millisecond := _}) -> {1000, millisecond}; +precision(#{second := _}) -> {1, second}; +precision(_) -> {1, second}. do_parse_date_str(<<>>, _, Result) -> Result; do_parse_date_str(_, [], Result) -> Result; @@ -408,36 +408,29 @@ do_parse_date_str(Date, [Key | Formatter], Result) -> end. date_size(Str) when is_list(Str) -> erlang:length(Str); -date_size(DateName) -> - Map = #{ - year => 4, - month => 2, - day => 2, - hour => 2, - minute => 2, - second => 2, - millisecond => 3, - microsecond => 6, - nanosecond => 9, - timezone => 5, - timezone1 => 6, - timezone2 => 9 - }, - maps:get(DateName, Map). +date_size(year) -> 4; +date_size(month) -> 2; +date_size(day) -> 2; +date_size(hour) -> 2; +date_size(minute) -> 2; +date_size(second) -> 2; +date_size(millisecond) -> 3; +date_size(microsecond) -> 6; +date_size(nanosecond) -> 9; +date_size(timezone) -> 5; +date_size(timezone1) -> 6; +date_size(timezone2) -> 9. + +dm(1) -> 0; +dm(2) -> 31; +dm(3) -> 59; +dm(4) -> 90; +dm(5) -> 120; +dm(6) -> 151; +dm(7) -> 181; +dm(8) -> 212; +dm(9) -> 243; +dm(10) -> 273; +dm(11) -> 304; +dm(12) -> 334. -dm(Month) -> - MonthDays = #{ - 1 => 0, - 2 => 31, - 3 => 59, - 4 => 90, - 5 => 120, - 6 => 151, - 7 => 181, - 8 => 212, - 9 => 243, - 10 => 273, - 11 => 304, - 12 => 334 - }, - maps:get(Month, MonthDays). diff --git a/src/emqx_logger_textfmt.erl b/src/emqx_logger_textfmt.erl index ba13c0cb7..1d1bb8dcd 100644 --- a/src/emqx_logger_textfmt.erl +++ b/src/emqx_logger_textfmt.erl @@ -29,7 +29,7 @@ ]). check_config(Config0) -> - Config = maps:without([timezone_offset, timezone, date_format], Config0), + Config = maps:without([date_format], Config0), logger_formatter:check_config(Config). format(#{msg := Msg0, meta := Meta} = Event, @@ -37,7 +37,6 @@ format(#{msg := Msg0, meta := Meta} = Event, Msg = maybe_merge(Msg0, Meta), Template = [time | Template0], logger_formatter:format(Event#{msg := Msg}, Config#{template => Template}); - format(#{msg := Msg0, meta := Meta} = Event, #{date_format := DFS} = Config) -> Msg = maybe_merge(Msg0, Meta),