Browse Source

ft:修改rumUtil.erl

master
SisMaker 4 years ago
parent
commit
e069b103b1
6 changed files with 44 additions and 112 deletions
  1. +2
    -2
      include/eRum.hrl
  2. +4
    -5
      src/formatter/rumFormatter.erl
  3. +2
    -3
      src/misc/rumCrashLog.erl
  4. +5
    -5
      src/misc/rumMsg.erl
  5. +31
    -50
      src/misc/rumUtil.erl
  6. +0
    -47
      test/lager_metadata_whitelist_test.erl

+ 2
- 2
include/eRum.hrl View File

@ -154,8 +154,8 @@
destinations :: list(),
metadata :: [tuple()],
severity :: rumLevel(),
datetime :: {string(), string()},
timestamp :: erlang:timestamp(),
datetime :: binary(),
timestamp :: non_neg_integer(),
message :: list()
}).

+ 4
- 5
src/formatter/rumFormatter.erl View File

@ -248,13 +248,12 @@ uppercase_severity(alert) -> "ALERT";
uppercase_severity(emergency) -> "EMERGENCY".
-ifdef(TEST).
date_time_now() ->
Now = os:timestamp(),
{Date, Time} = rumUtil:format_time(rumUtil:maybe_utc(rumUtil:localtime_ms(Now))),
{Date, Time, Now}.
basic_test_() ->
{Date, Time, Now} = date_time_now(),
Date = {1, 1,1},
Time = {1, 1,1},
Now = 11,
[{"Default formatting test",
?_assertEqual(iolist_to_binary([Date, " ", Time, " [error] ", pid_to_list(self()), " Message\n"]),
iolist_to_binary(format(rumMsg:new("Message",

+ 2
- 3
src/misc/rumCrashLog.erl View File

@ -191,9 +191,8 @@ do_log({log, Event}, #state{name = Name, fd = FD, inode = Inode, ctime = Ctime,
_ = Rotator:rotate_logfile(Name, Count),
handle_cast({log, Event}, State);
{ok, {NewFD, NewInode, NewCtime, _Size}} ->
{Date, TS} = rumUtil:format_time(
rumStdlib:maybe_utc(erlang:localtime())),
Time = [Date, " ", TS, " =", ReportStr, "====\n"],
TimeBinStr = rumUtil:msToBinStr(),
Time = [TimeBinStr, " =", ReportStr, "====\n"],
NodeSuffix = other_node_suffix(Pid),
Msg = io_lib:format("~s~s~s", [Time, MsgStr, NodeSuffix]),
case file:write(NewFD, unicode:characters_to_binary(Msg)) of

+ 5
- 5
src/misc/rumMsg.erl View File

@ -16,15 +16,15 @@
%% create with provided timestamp, handy for testing mostly
-spec new(list(), erlang:timestamp(), rumLevel(), [tuple()], list()) -> rumMsg().
new(Msg, Timestamp, Severity, Metadata, Destinations) ->
{Date, Time} = rumUtil:format_time(rumUtil:maybe_utc(rumUtil:localtime_ms(Timestamp))),
#rumMsg{message = Msg, datetime = {Date, Time}, timestamp = Timestamp, severity = Severity,
new(Msg, MsTick, Severity, Metadata, Destinations) ->
TimeBinStr = rumUtil:msToBinStr(MsTick),
#rumMsg{message = Msg, datetime = TimeBinStr, timestamp = MsTick, severity = Severity,
metadata = Metadata, destinations = Destinations}.
-spec new(list(), rumLevel(), [tuple()], list()) -> rumMsg().
new(Msg, Severity, Metadata, Destinations) ->
Now = os:timestamp(),
new(Msg, Now, Severity, Metadata, Destinations).
NowMs = rumUtil:nowMs(),
new(Msg, NowMs, Severity, Metadata, Destinations).
-spec message(rumMsg()) -> list().
message(Msg) ->

+ 31
- 50
src/misc/rumUtil.erl View File

@ -3,8 +3,6 @@
-include("eRum.hrl").
-include_lib("kernel/include/file.hrl").
-compile(export_all).
-export([
levels/0
, levelToNum/1
@ -13,11 +11,9 @@
, config_to_mask/1
, atomCfgToLevels/1
, maskToLevels/1
, format_time/0
, format_time/1
, localtime_ms/0
, localtime_ms/1
, maybe_utc/1
, nowMs/0
, msToBinStr/0
, msToBinStr/1
, parse_rotation_date_spec/1
, calculate_next_rotation/1
, validate_trace/1
@ -129,10 +125,6 @@ binCfgToLevels(<<">", Rest/binary>>) ->
binCfgToLevels(Rest) ->
[levelBinToAtom(Rest)].
binCfgToNum(BinStr) ->
Level = levelBinToAtom(BinStr),
dropInWhile(?RumLevels, Level).
dropInWhile([], _Level) ->
[];
dropInWhile([CurLevel | Left] = Rest, Level) ->
@ -182,40 +174,34 @@ levelBinToAtom(BinStr) ->
erlang:error(badarg)
end.
%% returns localtime with milliseconds included
localtime_ms() ->
Now = os:timestamp(),
localtime_ms(Now).
nowMs() ->
erlang:system_time(millisecond).
localtime_ms(Now) ->
{_, _, Micro} = Now,
{Date, {Hours, Minutes, Seconds}} = calendar:now_to_local_time(Now),
{Date, {Hours, Minutes, Seconds, Micro div 1000 rem 1000}}.
msToBinStr() ->
msToBinStr(nowMs()).
msToBinStr(MsTick) ->
ThisSec = MsTick div 1000,
ThisMs = MsTick rem 1000,
{{Y, M, D}, {H, Mi, S}} = erlang:universaltime_to_localtime(erlang:posixtime_to_universaltime(ThisSec)),
<<(integer_to_binary(Y))/binary, "-", (i2b(M))/binary, "-", (i2b(D))/binary, " ", (i2b(H))/binary, ":", (i2b(Mi))/binary, ":", (i2b(S))/binary, ".", (i3b(ThisMs))/binary>>.
maybe_utc({Date, {H, M, S, Ms}}) ->
case rumStdlib:maybe_utc({Date, {H, M, S}}) of
{utc, {Date1, {H1, M1, S1}}} ->
{utc, {Date1, {H1, M1, S1, Ms}}};
{n>Date1, {H1, M1, S1}} ->
{Date1, {H1, M1, S1, Ms}}
i2b(Num) ->
if
Num < 10 ->
<<"0", (integer_to_binary(Num))/binary>>;
true ->
integer_to_binary(Num)
end.
format_time() ->
format_time(maybe_utc(localtime_ms())).
format_time({utc, {{Y, M, D}, {H, Mi, S, Ms}}}) ->
{[integer_to_list(Y), $-, i2l(M), $-, i2l(D)],
[i2l(H), $:, i2l(Mi), $:, i2l(S), $., i3l(Ms), $ , $U, $T, $C]};
format_time({{Y, M, D}, {H, Mi, S, Ms}}) ->
{[integer_to_list(Y), $-, i2l(M), $-, i2l(D)],
[i2l(H), $:, i2l(Mi), $:, i2l(S), $., i3l(Ms)]};
format_time({utc, {{Y, M, D}, {H, Mi, S}}}) ->
{[integer_to_list(Y), $-, i2l(M), $-, i2l(D)],
[i2l(H), $:, i2l(Mi), $:, i2l(S), $ , $U, $T, $C]};
format_time({{Y, M, D}, {H, Mi, S}}) ->
{[integer_to_list(Y), $-, i2l(M), $-, i2l(D)],
[i2l(H), $:, i2l(Mi), $:, i2l(S)]}.
i3b(Num) ->
if Num < 10 ->
<<"00", (integer_to_binary(Num))/binary>>;
Num < 100 ->
<<"0", (integer_to_binary(Num))/binary>>;
true ->
integer_to_binary(Num)
end.
parse_rotation_hour_spec([], Res) ->
{ok, Res};
@ -491,11 +477,6 @@ is_loggable(Msg, SeverityThreshold, MyName) when is_integer(SeverityThreshold) -
rumMsg:severity_as_int(Msg) =< SeverityThreshold orelse
lists:member(MyName, rumMsg:destinations(Msg)).
i2l(I) when I < 10 -> [$0, $0 + I];
i2l(I) -> integer_to_list(I).
i3l(I) when I < 100 -> [$0 | i2l(I)];
i3l(I) -> integer_to_list(I).
%% When log_root option is provided, get the real path to a file
expand_path(RelPath) ->
case application:get_env(lager, log_root) of
@ -803,27 +784,27 @@ format_time_test_() ->
[
?_assertEqual("2012-10-04 11:16:23.002",
begin
{D, T} = format_time({{2012, 10, 04}, {11, 16, 23, 2}}),
{D, T} = msToBinStr({{2012, 10, 04}, {11, 16, 23, 2}}),
lists:flatten([D, $ , T])
end),
?_assertEqual("2012-10-04 11:16:23.999",
begin
{D, T} = format_time({{2012, 10, 04}, {11, 16, 23, 999}}),
{D, T} = msToBinStr({{2012, 10, 04}, {11, 16, 23, 999}}),
lists:flatten([D, $ , T])
end),
?_assertEqual("2012-10-04 11:16:23",
begin
{D, T} = format_time({{2012, 10, 04}, {11, 16, 23}}),
{D, T} = msToBinStr({{2012, 10, 04}, {11, 16, 23}}),
lists:flatten([D, $ , T])
end),
?_assertEqual("2012-10-04 00:16:23.092 UTC",
begin
{D, T} = format_time({utc, {{2012, 10, 04}, {0, 16, 23, 92}}}),
{D, T} = msToBinStr({utc, {{2012, 10, 04}, {0, 16, 23, 92}}}),
lists:flatten([D, $ , T])
end),
?_assertEqual("2012-10-04 11:16:23 UTC",
begin
{D, T} = format_time({utc, {{2012, 10, 04}, {11, 16, 23}}}),
{D, T} = msToBinStr({utc, {{2012, 10, 04}, {11, 16, 23}}}),
lists:flatten([D, $ , T])
end)
].

+ 0
- 47
test/lager_metadata_whitelist_test.erl View File

@ -21,51 +21,4 @@ cleanup(_) ->
ok = application:stop(goldrush),
ok = error_logger:tty(true).
date_time_now() ->
Now = os:timestamp(),
{Date, Time} = rumUtil:format_time(rumUtil:maybe_utc(rumUtil:localtime_ms(Now))),
{Date, Time, Now}.
basic_test_() ->
{Date, Time, Now} = date_time_now(),
{
foreach,
fun setup/0,
fun cleanup/1,
[{"Meta", fun() ->
Whitelist = [meta0],
ok = application:set_env(lager, metadata_whitelist, Whitelist),
Msg = rumMsg:new("Message", Now, error, [], []),
Expected = iolist_to_binary([Date, " ", Time, " [error] Message\n"]),
Got = iolist_to_binary(rumFormatter:format(Msg, [])),
?assertEqual(Expected, Got)
end},
{"Meta1", fun() ->
Whitelist = [meta1],
ok = application:set_env(lager, metadata_whitelist, Whitelist),
Msg = rumMsg:new("Message", Now, error, [{meta1, "value1"}], []),
Expected = iolist_to_binary([Date, " ", Time, " [error] meta1=value1 Message\n"]),
Got = iolist_to_binary(rumFormatter:format(Msg, [])),
?assertEqual(Expected, Got)
end},
{"Meta2", fun() ->
Whitelist = [meta1, meta2],
ok = application:set_env(lager, metadata_whitelist, Whitelist),
Msg = rumMsg:new("Message", Now, error, [{meta1, "value1"}, {meta2, 2}], []),
Expected = iolist_to_binary([Date, " ", Time, " [error] meta1=value1 meta2=2 Message\n"]),
Got = iolist_to_binary(rumFormatter:format(Msg, [])),
?assertEqual(Expected, Got)
end},
{"Meta3", fun() ->
Whitelist = [meta1, meta2],
ok = application:set_env(lager, metadata_whitelist, Whitelist),
Msg = rumMsg:new("Message", Now, error, [{meta1, "value1"}, {meta3, 3}], []),
Expected = iolist_to_binary([Date, " ", Time, " [error] meta1=value1 Message\n"]),
Got = iolist_to_binary(rumFormatter:format(Msg, [])),
?assertEqual(Expected, Got)
end}
]
}.
-endif.

Loading…
Cancel
Save