From e834a2c36950b725c7b47c6d51cc3d3a46c852c4 Mon Sep 17 00:00:00 2001 From: SisMaker <1713699517@qq.com> Date: Mon, 8 Mar 2021 18:22:34 +0800 Subject: [PATCH] =?UTF-8?q?ft:=20=E4=BB=A3=E7=A0=81=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/backend/rumBackendFile.erl | 4 +- src/utils/rumUtil.erl | 114 ++++++++++++++++----------------- 2 files changed, 59 insertions(+), 59 deletions(-) diff --git a/src/backend/rumBackendFile.erl b/src/backend/rumBackendFile.erl index 4f871d0..a27b84a 100644 --- a/src/backend/rumBackendFile.erl +++ b/src/backend/rumBackendFile.erl @@ -315,7 +315,7 @@ validate_logfile_proplist(List) -> false; _File -> %% merge with the default options - {ok, DefaultRotationDate} = rumUtil:parse_rotation_date_spec(?DEFAULT_ROTATION_DATE), + {ok, DefaultRotationDate} = rumUtil:parseRotateDateSpec(?DEFAULT_ROTATION_DATE), lists:keymerge(1, lists:sort(Res), lists:sort([ {level, validate_loglevel(?DEFAULT_LOG_LEVEL)}, {date, DefaultRotationDate}, {size, ?DEFAULT_ROTATION_SIZE}, {count, ?DEFAULT_ROTATION_COUNT}, @@ -373,7 +373,7 @@ validate_logfile_proplist([{high_water_mark, HighWaterMark} | Tail], Acc) -> throw({bad_config, "Invalid high water mark", HighWaterMark}) end; validate_logfile_proplist([{date, Date} | Tail], Acc) -> - case rumUtil:parse_rotation_date_spec(Date) of + case rumUtil:parseRotateDateSpec(Date) of {ok, Spec} -> validate_logfile_proplist(Tail, [{date, Spec} | Acc]); {error, _} when Date == "" -> diff --git a/src/utils/rumUtil.erl b/src/utils/rumUtil.erl index f00ddf6..6573afa 100644 --- a/src/utils/rumUtil.erl +++ b/src/utils/rumUtil.erl @@ -14,7 +14,7 @@ , nowMs/0 , msToBinStr/0 , msToBinStr/1 - , parse_rotation_date_spec/1 + , parseRotateDateSpec/1 , calcNextRotate/1 , validate_trace/1 , check_traces/4 @@ -205,66 +205,66 @@ i3b(Num) -> integer_to_binary(Num) end. -parse_rotation_hour_spec([], Res) -> +parseRotateHourSpec([], Res) -> {ok, Res}; -parse_rotation_hour_spec([$H, M1, M2], Res) -> +parseRotateHourSpec([$H, M1, M2], Res) -> case list_to_integer([M1, M2]) of X when X >= 0, X =< 59 -> {ok, Res ++ [{minute, X}]}; _ -> {error, invalid_date_spec} end; -parse_rotation_hour_spec([$H, M], Res) when M >= $0, M =< $9 -> - {ok, Res ++ [{minute, M - 48}]}; -parse_rotation_hour_spec(_, _) -> +parseRotateHourSpec([$H, M], Res) when M >= $0, M =< $9 -> + {ok, Res ++ [{minute, M - $0}]}; +parseRotateHourSpec(_, _) -> {error, invalid_date_spec}. %% Default to 00:00:00 rotation -parse_rotation_day_spec([], Res) -> +parseRotateDaySpec([], Res) -> {ok, Res ++ [{hour, 0}]}; -parse_rotation_day_spec([$D, D1, D2 | T], Res) -> +parseRotateDaySpec([$D, D1, D2 | T], Res) -> case list_to_integer([D1, D2]) of X when X >= 0, X =< 23 -> - parse_rotation_hour_spec(T, Res ++ [{hour, X}]); + parseRotateHourSpec(T, Res ++ [{hour, X}]); _ -> {error, invalid_date_spec} end; -parse_rotation_day_spec([$D, D | T], Res) when D >= $0, D =< $9 -> - parse_rotation_hour_spec(T, Res ++ [{hour, D - 48}]); -parse_rotation_day_spec(X, Res) -> - parse_rotation_hour_spec(X, Res). - -parse_rotation_date_spec([$$, $W, W | T]) when W >= $0, W =< $6 -> - Week = W - 48, - parse_rotation_day_spec(T, [{day, Week}]); -parse_rotation_date_spec([$$, $M, L | T]) when L == $L; L == $l -> +parseRotateDaySpec([$D, D | T], Res) when D >= $0, D =< $9 -> + parseRotateHourSpec(T, Res ++ [{hour, D - $0}]); +parseRotateDaySpec(X, Res) -> + parseRotateHourSpec(X, Res). + +parseRotateDateSpec([$$, $W, W | T]) when W >= $0, W =< $6 -> + Week = W - $0, + parseRotateDaySpec(T, [{day, Week}]); +parseRotateDateSpec([$$, $M, L | T]) when L == $L; L == $l -> %% last day in month. - parse_rotation_day_spec(T, [{date, last}]); -parse_rotation_date_spec([$$, $M, M1, M2 | [$D | _] = T]) -> + parseRotateDaySpec(T, [{date, last}]); +parseRotateDateSpec([$$, $M, M1, M2 | [$D | _] = T]) -> case list_to_integer([M1, M2]) of X when X >= 1, X =< 31 -> - parse_rotation_day_spec(T, [{date, X}]); + parseRotateDaySpec(T, [{date, X}]); _ -> {error, invalid_date_spec} end; -parse_rotation_date_spec([$$, $M, M | [$D | _] = T]) -> - parse_rotation_day_spec(T, [{date, M - 48}]); -parse_rotation_date_spec([$$, $M, M1, M2]) -> +parseRotateDateSpec([$$, $M, M | [$D | _] = T]) -> + parseRotateDaySpec(T, [{date, M - $0}]); +parseRotateDateSpec([$$, $M, M1, M2]) -> case list_to_integer([M1, M2]) of X when X >= 1, X =< 31 -> {ok, [{date, X}, {hour, 0}]}; _ -> {error, invalid_date_spec} end; -parse_rotation_date_spec([$$, $M, M]) -> - {ok, [{date, M - 48}, {hour, 0}]}; -parse_rotation_date_spec([$$ | X]) when X /= [] -> - parse_rotation_day_spec(X, []); -parse_rotation_date_spec(_) -> +parseRotateDateSpec([$$, $M, M]) -> + {ok, [{date, M - $0}, {hour, 0}]}; +parseRotateDateSpec([$$ | X]) when X /= [] -> + parseRotateDaySpec(X, []); +parseRotateDateSpec(_) -> {error, invalid_date_spec}. calcNextRotate(Spec) -> - NowDataTime = erlang:localtime(), + NowDataTime = erlang:localtime(), Later = calculate_next_rotation(Spec, NowDataTime), calendar:datetime_to_gregorian_seconds(Later) - calendar:datetime_to_gregorian_seconds(NowDataTime). @@ -639,36 +639,36 @@ get_env(Key, Def) -> -ifdef(TEST). parse_test() -> - ?assertEqual({ok, [{minute, 0}]}, parse_rotation_date_spec("$H0")), - ?assertEqual({ok, [{minute, 59}]}, parse_rotation_date_spec("$H59")), - ?assertEqual({ok, [{hour, 0}]}, parse_rotation_date_spec("$D0")), - ?assertEqual({ok, [{hour, 23}]}, parse_rotation_date_spec("$D23")), - ?assertEqual({ok, [{day, 0}, {hour, 23}]}, parse_rotation_date_spec("$W0D23")), - ?assertEqual({ok, [{day, 5}, {hour, 16}]}, parse_rotation_date_spec("$W5D16")), - ?assertEqual({ok, [{day, 0}, {hour, 12}, {minute, 30}]}, parse_rotation_date_spec("$W0D12H30")), - ?assertEqual({ok, [{date, 1}, {hour, 0}]}, parse_rotation_date_spec("$M1D0")), - ?assertEqual({ok, [{date, 5}, {hour, 6}]}, parse_rotation_date_spec("$M5D6")), - ?assertEqual({ok, [{date, 5}, {hour, 0}]}, parse_rotation_date_spec("$M5")), - ?assertEqual({ok, [{date, 31}, {hour, 0}]}, parse_rotation_date_spec("$M31")), - ?assertEqual({ok, [{date, 31}, {hour, 1}]}, parse_rotation_date_spec("$M31D1")), - ?assertEqual({ok, [{date, last}, {hour, 0}]}, parse_rotation_date_spec("$ML")), - ?assertEqual({ok, [{date, last}, {hour, 0}]}, parse_rotation_date_spec("$Ml")), - ?assertEqual({ok, [{day, 5}, {hour, 0}]}, parse_rotation_date_spec("$W5")), + ?assertEqual({ok, [{minute, 0}]}, parseRotateDateSpec("$H0")), + ?assertEqual({ok, [{minute, 59}]}, parseRotateDateSpec("$H59")), + ?assertEqual({ok, [{hour, 0}]}, parseRotateDateSpec("$D0")), + ?assertEqual({ok, [{hour, 23}]}, parseRotateDateSpec("$D23")), + ?assertEqual({ok, [{day, 0}, {hour, 23}]}, parseRotateDateSpec("$W0D23")), + ?assertEqual({ok, [{day, 5}, {hour, 16}]}, parseRotateDateSpec("$W5D16")), + ?assertEqual({ok, [{day, 0}, {hour, 12}, {minute, 30}]}, parseRotateDateSpec("$W0D12H30")), + ?assertEqual({ok, [{date, 1}, {hour, 0}]}, parseRotateDateSpec("$M1D0")), + ?assertEqual({ok, [{date, 5}, {hour, 6}]}, parseRotateDateSpec("$M5D6")), + ?assertEqual({ok, [{date, 5}, {hour, 0}]}, parseRotateDateSpec("$M5")), + ?assertEqual({ok, [{date, 31}, {hour, 0}]}, parseRotateDateSpec("$M31")), + ?assertEqual({ok, [{date, 31}, {hour, 1}]}, parseRotateDateSpec("$M31D1")), + ?assertEqual({ok, [{date, last}, {hour, 0}]}, parseRotateDateSpec("$ML")), + ?assertEqual({ok, [{date, last}, {hour, 0}]}, parseRotateDateSpec("$Ml")), + ?assertEqual({ok, [{day, 5}, {hour, 0}]}, parseRotateDateSpec("$W5")), ok. parse_fail_test() -> - ?assertEqual({error, invalid_date_spec}, parse_rotation_date_spec("$H")), - ?assertEqual({error, invalid_date_spec}, parse_rotation_date_spec("$H60")), - ?assertEqual({error, invalid_date_spec}, parse_rotation_date_spec("$D")), - ?assertEqual({error, invalid_date_spec}, parse_rotation_date_spec("$D24")), - ?assertEqual({error, invalid_date_spec}, parse_rotation_date_spec("$W7")), - ?assertEqual({error, invalid_date_spec}, parse_rotation_date_spec("$W7D1")), - ?assertEqual({error, invalid_date_spec}, parse_rotation_date_spec("$M32")), - ?assertEqual({error, invalid_date_spec}, parse_rotation_date_spec("$M32D1")), - ?assertEqual({error, invalid_date_spec}, parse_rotation_date_spec("$")), - ?assertEqual({error, invalid_date_spec}, parse_rotation_date_spec("")), - ?assertEqual({error, invalid_date_spec}, parse_rotation_date_spec("$D15M5")), - ?assertEqual({error, invalid_date_spec}, parse_rotation_date_spec("$M5W5")), + ?assertEqual({error, invalid_date_spec}, parseRotateDateSpec("$H")), + ?assertEqual({error, invalid_date_spec}, parseRotateDateSpec("$H60")), + ?assertEqual({error, invalid_date_spec}, parseRotateDateSpec("$D")), + ?assertEqual({error, invalid_date_spec}, parseRotateDateSpec("$D24")), + ?assertEqual({error, invalid_date_spec}, parseRotateDateSpec("$W7")), + ?assertEqual({error, invalid_date_spec}, parseRotateDateSpec("$W7D1")), + ?assertEqual({error, invalid_date_spec}, parseRotateDateSpec("$M32")), + ?assertEqual({error, invalid_date_spec}, parseRotateDateSpec("$M32D1")), + ?assertEqual({error, invalid_date_spec}, parseRotateDateSpec("$")), + ?assertEqual({error, invalid_date_spec}, parseRotateDateSpec("")), + ?assertEqual({error, invalid_date_spec}, parseRotateDateSpec("$D15M5")), + ?assertEqual({error, invalid_date_spec}, parseRotateDateSpec("$M5W5")), ok. rotation_calculation_test() ->