Browse Source

ft: rumFormatTer相关整理

master
SisMaker 4 years ago
parent
commit
5f218d0287
3 changed files with 68 additions and 71 deletions
  1. +1
    -1
      include/eRum.hrl
  2. +10
    -1
      src/backend/rumBkdFile.erl
  3. +57
    -69
      src/formatter/rumFormatTer.erl

+ 1
- 1
include/eRum.hrl View File

@ -13,7 +13,7 @@
end).
%%
%% Level, Pid, Node, Module, Function, FunctionArity, File, Line, Other
%% Level, Pid, Node, Module, Function, Line, Other
-define(rumLog(Severity, Format, Args, Safety),
?rumLog(?RumDefSink, Severity, self(), node(), ?MODULE, ?FUNCTION_NAME, ?LINE, eRum:md(), Format, Args, ?RumDefTruncation, Safety)).

+ 10
- 1
src/backend/rumBkdFile.erl View File

@ -67,7 +67,7 @@ init(Opts) ->
SyncSize = rumUtil:get_opt(syncSize, Opts, ?RumDefSyncSize),
CfgSyncOn = rumUtil:get_opt(syncOn, Opts, ?RumDefSyncLevel),
FormatTer = rumUtil:get_opt(formatTer, Opts, ?RumDefFormatTer),
FormatCfg = rumUtil:get_opt(formatCfg, Opts, ?RumDefFormatterCfg),
CfgFormatCfg = rumUtil:get_opt(formatCfg, Opts, ?RumDefFormatterCfg),
%%
Level = rumUtil:configToMask(CfgLevel),
@ -76,6 +76,15 @@ init(Opts) ->
{ok, Date} = rumUtil:parseRotateSpec(CfgDate),
FileName = rumUtil:parsePath(RelName),
FormatCfg =
case CfgFormatCfg of
[] ->
Whitelist = rumUtil:get_env(metadataWhitelist, []),
rumFormatTer:formatCfg(Whitelist);
_ ->
CfgFormatCfg
end,
scheduleRotation(Date, FileName),
Shaper = rumUtil:maybeFlush(Flush, #rumShaper{hwm = HWM, flushThr = FlushThr, id = FileName}),
TemState = #state{

+ 57
- 69
src/formatter/rumFormatTer.erl View File

@ -8,6 +8,7 @@
-export([
format/2
, format/3
, formatCfg/1
]).
%%
@ -49,16 +50,6 @@
format(RumMsg, Config) ->
[output(V, RumMsg) || V <- Config].
-spec format(rumMsg(), list(), list()) -> any().
format(RumMsg, [], Colors) ->
format(RumMsg, [{eol, "\n"}], Colors);
format(RumMsg, [{eol, EOL}], Colors) ->
Config =
case rumUtil:get_env(metadataWhitelist, undefined) of
undefined -> config(EOL, []);
Whitelist -> config(EOL, Whitelist)
end,
format(RumMsg, Config, Colors);
format(RumMsg, Config, Colors) ->
[
case V of
@ -67,9 +58,22 @@ format(RumMsg, Config, Colors) ->
end || V <- Config
].
formatCfg([]) ->
[datetime, color, <<"[">>, severity, <<"]">>, node, <<"|">>, pid, <<"|">>, module, <<"|">>, function, <<"|">>, line, <<"|">>, message, <<"\n">>];
formatCfg(MetaWhitelist) ->
[datetime, color, <<"[">>, severity, <<"]">>, node, <<"|">>, pid, <<"|">>, module, <<"|">>, function, <<"|">>, line, <<"|">>] ++
[{M, [atom_to_binary(M), <<"=">>, M, "|"], [<<>>]} || M <- MetaWhitelist] ++ [message, <<"\n">>].
% Level, Pid, Node, Module, Function, FunctionArity, Line
-define(FixMd, [pid, node, module, function, line]).
-spec output(term(), rumMsg()) -> iolist().
output(message, RumMsg) -> RumMsg#rumMsg.message;
output(datetime, RumMsg) -> RumMsg#rumMsg.datetime;
output(datetime, RumMsg) -> RumMsg#rumMsg.datetime;
output(pid, RumMsg) -> RumMsg#rumMsg.pid;
output(node, RumMsg) -> RumMsg#rumMsg.node;
output(datetime, RumMsg) -> RumMsg#rumMsg.datetime;
output(module, RumMsg) -> atom_to_binary(RumMsg#rumMsg.module, utf8);
output(function, RumMsg) -> atom_to_binary(RumMsg#rumMsg.function, utf8);
output(line, RumMsg) -> integer_to_binary(RumMsg#rumMsg.line);
@ -77,7 +81,8 @@ output(severity, RumMsg) -> loSeverity(RumMsg#rumMsg.severity);
output(upSeverity, RumMsg) -> upSeverity(RumMsg#rumMsg.severity);
output(blank, _RumMsg) -> <<" ">>;
output(node, RumMsg) -> atom_to_binary(RumMsg#rumMsg.node, utf8);
output(sev, RumMsg) -> sevSeverity(RumMsg#rumMsg.severity); %% Write brief acronym for the severity level (e.g. debug -> $D)
output(sev, RumMsg) ->
sevSeverity(RumMsg#rumMsg.severity); %% Write brief acronym for the severity level (e.g. debug -> $D)
output(metadata, RumMsg) -> mdJoin(RumMsg#rumMsg.metadata, <<"|">>, <<>>);
output({blank, Fill}, _RumMsg) -> Fill;
output({metadata, IntSep, FieldSep}, RumMsg) ->
@ -87,11 +92,11 @@ output({pterm, Key}, _RumMsg) ->
output({pterm, Key, Default}, _RumMsg) ->
makeStr(getPTerm(Key, Default));
output(Prop, RumMsg) when is_atom(Prop) ->
makeStr(getMdKey(Prop, RumMsg#rumMsg.metadata, <<"Undefined">>));
makeStr(getMdKey(Prop, RumMsg, <<"Undefined">>));
output({Prop, Default}, RumMsg) when is_atom(Prop) ->
makeStr(getMdKey(Prop, RumMsg#rumMsg.metadata, output(Default, RumMsg)));
makeStr(getMdKey(Prop, RumMsg, output(Default, RumMsg)));
output({Prop, Present, Absent}, RumMsg) when is_atom(Prop) ->
case getMdKey(Prop, RumMsg#rumMsg.metadata) of
case getMdKey(Prop, RumMsg) of
undefined ->
[output(V, RumMsg) || V <- Absent];
_ ->
@ -99,7 +104,7 @@ output({Prop, Present, Absent}, RumMsg) when is_atom(Prop) ->
end;
output({Prop, Present, Absent, Width}, RumMsg) when is_atom(Prop) ->
%% sort of like a poor man's ternary operator
case getMdKey(Prop, RumMsg#rumMsg.metadata) of
case getMdKey(Prop, RumMsg) of
undefined ->
[output(V, RumMsg, Width) || V <- Absent];
_ ->
@ -109,6 +114,8 @@ output(Other, _) -> makeStr(Other).
output(message, RumMsg, _Width) -> RumMsg#rumMsg.message;
output(datetime, RumMsg, _Width) -> RumMsg#rumMsg.datetime;
output(pid, RumMsg, _Width) -> RumMsg#rumMsg.pid;
output(node, RumMsg, _Width) -> RumMsg#rumMsg.node;
output(module, RumMsg, _Width) -> atom_to_binary(RumMsg#rumMsg.module, utf8);
output(function, RumMsg, _Width) -> atom_to_binary(RumMsg#rumMsg.function, utf8);
output(line, RumMsg, _Width) -> integer_to_binary(RumMsg#rumMsg.line);
@ -116,7 +123,8 @@ output(severity, RumMsg, _Width) -> loSeverity(RumMsg#rumMsg.severity);
output(upSeverity, RumMsg, _Width) -> upSeverity(RumMsg#rumMsg.severity);
output(blank, _RumMsg, _Width) -> <<" ">>;
output(node, RumMsg, _Width) -> atom_to_binary(RumMsg#rumMsg.node, utf8);
output(sev, RumMsg, _Width) -> sevSeverity(RumMsg#rumMsg.severity); %% Write brief acronym for the severity level (e.g. debug -> $D)
output(sev, RumMsg, _Width) ->
sevSeverity(RumMsg#rumMsg.severity); %% Write brief acronym for the severity level (e.g. debug -> $D)
output({blank, Fill}, _RumMsg, _Width) -> Fill;
output(metadata, RumMsg, _Width) -> mdJoin(RumMsg#rumMsg.metadata, <<"|">>, <<>>);
output({metadata, IntSep, FieldSep}, RumMsg, _Width) ->
@ -124,9 +132,9 @@ output({metadata, IntSep, FieldSep}, RumMsg, _Width) ->
output({pterm, Key}, _RumMsg, _Width) -> makeStr(getPTerm(Key, <<"">>));
output({pterm, Key, Default}, _RumMsg, _Width) -> makeStr(getPTerm(Key, Default));
output(Prop, RumMsg, Width) when is_atom(Prop) ->
makeStr(getMdKey(Prop, RumMsg#rumMsg.metadata, <<"Undefined">>), Width);
makeStr(getMdKey(Prop, RumMsg, <<"Undefined">>), Width);
output({Prop, Default}, RumMsg, Width) when is_atom(Prop) ->
makeStr(getMdKey(Prop, RumMsg#rumMsg.metadata, output(Default, RumMsg)), Width);
makeStr(getMdKey(Prop, RumMsg, output(Default, RumMsg)), Width);
output(Other, _, Width) -> makeStr(Other, Width).
outColor([], _RumMsg) -> <<>>;
@ -166,13 +174,18 @@ makeStr(_, Str, W) ->
getPTerm(Key, Default) ->
persistent_term:get(Key, Default).
getMdKey(Key, Metadata) ->
getMdKey(Key, Metadata, undefined).
getMdKey(Key, RumMsg) ->
getMdKey(Key, RumMsg, undefined).
getMdKey(Key, Metadata, Default) ->
case lists:keyfind(Key, 1, Metadata) of
getMdKey(Key, RumMsg, Default) ->
case lists:keyfind(Key, 1, RumMsg#rumMsg.metadata) of
false ->
Default;
case lists:member(Key, ?FixMd) of
true ->
output(Key, RumMsg);
_ ->
Default
end;
{_Key, Fun} when is_function(Fun) ->
runFun(Fun, Default);
{_Key, Value} ->
@ -186,56 +199,31 @@ runFun(Fun, Default) ->
Default
end.
config(EOL, []) ->
[
datetime, " ", color, "[", severity, "] ",
{pid, ""},
{module, [
{pid, ["@"], ""},
module,
{function, [":", function], ""},
{line, [":", line], ""}], ""},
" ", message, EOL
];
config(EOL, MetaWhitelist) ->
[
datetime, " ", color, "[", severity, "] ",
{pid, ""},
{module, [
{pid, ["@"], ""},
module,
{function, [":", function], ""},
{line, [":", line], ""}], ""},
" "
] ++
[{M, [atom_to_list(M), "=", M, " "], ""} || M <- MetaWhitelist] ++
[message, EOL].
loSeverity(?debug) -> <<"debug">>;
loSeverity(?info) -> <<"info">>;
loSeverity(?notice) -> <<"notice">>;
loSeverity(?warning) -> <<"warning">>;
loSeverity(?error) -> <<"error">>;
loSeverity(?critical) -> <<"critical">>;
loSeverity(?alert) -> <<"alert">>;
loSeverity(?emergency) -> <<"emergency">>;
loSeverity(?none) -> <<"none">>.
upSeverity(?debug) -> <<"DEBUG">>;
upSeverity(?info) -> <<"INFO">>;
upSeverity(?notice) -> <<"NOTICE">>;
upSeverity(?warning) -> <<"WARNING">>;
upSeverity(?error) -> <<"ERROR">>;
loSeverity(?debug) -> <<"debug">>;
loSeverity(?info) -> <<"info">>;
loSeverity(?notice) -> <<"notice">>;
loSeverity(?warning) -> <<"warning">>;
loSeverity(?error) -> <<"error">>;
loSeverity(?critical) -> <<"critical">>;
loSeverity(?alert) -> <<"alert">>;
loSeverity(?emergency) -> <<"emergency">>;
loSeverity(?none) -> <<"none">>.
upSeverity(?debug) -> <<"DEBUG">>;
upSeverity(?info) -> <<"INFO">>;
upSeverity(?notice) -> <<"NOTICE">>;
upSeverity(?warning) -> <<"WARNING">>;
upSeverity(?error) -> <<"ERROR">>;
upSeverity(?critical) -> <<"CRITICAL">>;
upSeverity(?alert) -> <<"ALERT">>;
upSeverity(?emergency) -> <<"EMERGENCY">>;
upSeverity(?none) -> <<"NONE">>.
sevSeverity(?debug) -> <<"[D]">>;
sevSeverity(?info) -> <<"[I]">>;
sevSeverity(?notice) -> <<"[N]">>;
sevSeverity(?warning) -> <<"[W]">>;
sevSeverity(?error) -> <<"[E]">>;
sevSeverity(?debug) -> <<"[D]">>;
sevSeverity(?info) -> <<"[I]">>;
sevSeverity(?notice) -> <<"[N]">>;
sevSeverity(?warning) -> <<"[W]">>;
sevSeverity(?error) -> <<"[E]">>;
sevSeverity(?critical) -> <<"[C]">>;
sevSeverity(?alert) -> <<"[A]">>;
sevSeverity(?emergency) -> <<"[E]">>;

Loading…
Cancel
Save