瀏覽代碼

ft: 代码修改调整

master
SisMaker 4 年之前
父節點
當前提交
e834a2c369
共有 2 個文件被更改,包括 59 次插入59 次删除
  1. +2
    -2
      src/backend/rumBackendFile.erl
  2. +57
    -57
      src/utils/rumUtil.erl

+ 2
- 2
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 == "" ->

+ 57
- 57
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() ->

Loading…
取消
儲存