Преглед изворни кода

ft: message 和 文件检查间隔

master
SisMaker пре 5 месеци
родитељ
комит
9092516bd6
7 измењених фајлова са 43 додато и 38 уклоњено
  1. +7
    -6
      include/eLog.hrl
  2. +3
    -0
      include/lgCom.hrl
  3. +1
    -2
      include/lgDef.hrl
  4. +11
    -7
      src/backend/lgBkdFile.erl
  5. +10
    -12
      src/eLog.erl
  6. +7
    -7
      src/errLogger/lgErrLoggerH.erl
  7. +4
    -4
      src/formatter/lgFmtTer.erl

+ 7
- 6
include/eLog.hrl Прегледај датотеку

@ -9,8 +9,9 @@
case ets:info(?eLogEts) of
undefined ->
ets:new(?eLogEts, [named_table, public]),
ets:insert(?eLogEts, {Sink, ?llvNone}),
lgKvsToBeam:load(?eLogCfg, [{Sink, ?llvNone}]);
NodeName = atom_to_binary(node(), utf8),
ets:insert(?eLogEts, [{Sink, ?llvNone}, {?eLogNodeName, NodeName}]),
lgKvsToBeam:load(?eLogCfg, [{Sink, ?llvNone}, {?eLogNodeName, NodeName}]);
_ ->
ignore
end).
@ -19,13 +20,13 @@
%% Level, Pid, Node, Module, Function, Line, Other
-define(lgLog(Severity, Format, Args, Safety),
?lgLog(?LgDefSink, Severity, self(), node(), ?MODULE, ?FUNCTION_NAME, ?LINE, eLog:getMd(), Format, Args, ?LgDefTruncation, Safety)).
?lgLog(?LgDefSink, Severity, self(), ?MODULE, ?FUNCTION_NAME, ?LINE, eLog:getMd(), Format, Args, ?LgDefTruncation, Safety)).
-define(lgLog(Severity, Metadata, Format, Args, Safety),
?lgLog(?LgDefSink, Severity, self(), node(), ?MODULE, ?FUNCTION_NAME, ?LINE, ?lgCASE(eLog:getMdPd(), undefined, Metadata, Md, Metadata ++ Md), Format, Args, ?LgDefTruncation, Safety)).
?lgLog(?LgDefSink, Severity, self(), ?MODULE, ?FUNCTION_NAME, ?LINE, ?lgCASE(eLog:getMdPd(), undefined, Metadata, Md, Metadata ++ Md), Format, Args, ?LgDefTruncation, Safety)).
-define(lgLog(Sink, Severity, Pid, Node, Module, Function, Line, Metadata, Format, Args, Size, Safety),
(?eLogCfg:get(Sink) band Severity == Severity andalso eLog:doLogImpl(Severity, Pid, Node, Module, Function, Line, Metadata, Format, Args, Size, Sink, Safety))).
-define(lgLog(Sink, Severity, Pid, Module, Function, Line, Metadata, Format, Args, Size, Safety),
(?eLogCfg:get(Sink) band Severity == Severity andalso eLog:doLogImpl(Severity, Pid, Module, Function, Line, Metadata, Format, Args, Size, Sink, Safety))).
-define(lgNone(Format), ?lgLog(?llvNone, Format, undefined, safe)).
-define(lgNone(Format, Args), ?lgLog(?llvNone, Format, Args, safe)).

+ 3
- 0
include/lgCom.hrl Прегледај датотеку

@ -13,6 +13,9 @@
-define(eLogEts, eLogEts).
-define(eLogPtTl, eLogPtTl).
%%
-define(eLogNodeName, eLogNodeName).
-define(LgDefSink, eLogEvent).
-define(LgDefTruncation, 4096).

+ 1
- 2
include/lgDef.hrl Прегледај датотеку

@ -98,7 +98,6 @@
-record(lgMsg, {
severity :: lgNumLevel()
, pid :: pid()
, node :: node()
, module :: module()
, function :: atom()
, line :: integer()
@ -123,7 +122,7 @@
-define(LgShouldLog(Level), ?eLogCfg:get(?LgDefSink) band Level =/= 0).
-define(LgNotify(Level, Pid, Format, Args),
gen_emm:info_notify(?LgDefSink, {mWriteLog, #lgMsg{severity = Level, pid = Pid, node = node(), module = ?MODULE, function = ?FUNCTION_NAME, line = ?LINE, metadata = [], timestamp = lgTime:nowMs(), message = eFmt:format(Format, Args), destinations = []}})).
gen_emm:info_notify(?LgDefSink, {mWriteLog, #lgMsg{severity = Level, pid = Pid, module = ?MODULE, function = ?FUNCTION_NAME, line = ?LINE, metadata = [], timestamp = lgTime:nowMs(), message = eFmt:format(Format, Args), destinations = []}})).
%%使
-define(INT_LOG(Level, Format, Args),

+ 11
- 7
src/backend/lgBkdFile.erl Прегледај датотеку

@ -138,7 +138,7 @@ handleEvent({mWriteLog, Message}, #state{fBName = _FBName, level = Level, shaper
_ ->
ReportStr = eFmt:format(<<"lgBkdFile dropped ~p messages in the last second that exceeded the limit of ~p messages/sec">>, [Drop, NewShaper#lgShaper.hwm]),
NowMs = lgTime:nowMs(),
ReportMsg = #lgMsg{severity = ?llvWarning, pid = self(), node = node(), module = ?MODULE, function = ?FUNCTION_NAME, line = ?LINE, metadata = [], timestamp = NowMs, message = ReportStr, destinations = []},
ReportMsg = #lgMsg{severity = ?llvWarning, pid = self(), module = ?MODULE, function = ?FUNCTION_NAME, line = ?LINE, metadata = [], timestamp = NowMs, message = ReportStr, destinations = []},
writeLog(State, NowMs, ?llvWarning, FmtTer:format(ReportMsg, FmtCfg))
end,
{noreply, writeLog(TemState#state{shaper = NewShaper}, Timestamp, Severity, FmtTer:format(Message, FmtCfg))};
@ -165,7 +165,7 @@ handleInfo({mShaperExpired, FBName}, #state{shaper = Shaper, fBName = FBName, fm
Dropped ->
ReportStr = eFmt:format(<<"lgBkdFile dropped ~p messages in the last second that exceeded the limit of ~p messages/sec">>, [Dropped, Shaper#lgShaper.hwm]),
NowMs = lgTime:nowMs(),
ReportMsg = #lgMsg{severity = ?llvWarning, pid = self(), node = node(), module = ?MODULE, function = ?FUNCTION_NAME, line = ?LINE, metadata = [], timestamp = NowMs, message = ReportStr, destinations = []},
ReportMsg = #lgMsg{severity = ?llvWarning, pid = self(), module = ?MODULE, function = ?FUNCTION_NAME, line = ?LINE, metadata = [], timestamp = NowMs, message = ReportStr, destinations = []},
writeLog(State, NowMs, ?llvWarning, FmtTer:format(ReportMsg, FmtCfg))
end,
{noreply, State#state{shaper = Shaper#lgShaper{dropped = 0}}};
@ -184,6 +184,7 @@ code_change(_OldVsn, State, _Extra) ->
writeLog(#state{fileName = FileName, fd = Fd, inode = Inode, cTime = CTime, flap = Flap, size = RotSize, rotator = Rotator, lastCheck = LastCheck, checkInt = CheckInt, syncSize = SyncSize, syncInt = SyncInt} = State, Timestamp, Level, Msg) ->
case isWriteCheck(Fd, LastCheck, CheckInt, FileName, Inode, CTime, Timestamp) of
true ->
io:format("IMY****************111 ~p ~p ~p~n", [Fd, CheckInt, Timestamp]),
%% need to check for rotation
case Rotator:ensureLogFile(FileName, Fd, Inode, CTime, {SyncSize, SyncInt}) of
{ok, NewFD, NewInode, NewCTime, FileSize} ->
@ -201,6 +202,7 @@ writeLog(#state{fileName = FileName, fd = Fd, inode = Inode, cTime = CTime, flap
?lgCASE(Flap, State, begin ?INT_LOG(?llvError, <<"Failed to reopen log file ~ts with error ~s">>, [FileName, file:format_error(Reason)]), State#state{flap = true} end)
end;
_ ->
io:format("IMY***************222 ~p ~p ~p~n", [Fd, CheckInt, Timestamp]),
writeFile(State, Level, Msg)
end.
@ -225,15 +227,17 @@ writeFile(#state{fd = Fd, fileName = FileName, flap = Flap, syncOn = SyncOn} = S
State
end.
isWriteCheck(Fd, LastCheck, CheckInt, Name, Inode, CTime, Timestamp) ->
isWriteCheck(undefined, _LastCheck, _CheckInt, _Name, _Inode, _CTime, _Timestamp) ->
true;
isWriteCheck(_Fd, LastCheck, CheckInt, Name, Inode, CTime, Timestamp) ->
DiffTime = abs(Timestamp - LastCheck),
case DiffTime >= CheckInt orelse Fd == undefined of
case DiffTime >= CheckInt of
true ->
true;
_ ->
% We need to know if the file has changed "out from under eLog" so we don't write to an invalid Fd
{Result, _FInfo} = lgUtil:isFileChanged(Name, Inode, CTime),
Result
Result;
_ ->
false
end.
%% Convert the config into a gen_event handler ID

+ 10
- 12
src/eLog.erl Прегледај датотеку

@ -13,8 +13,8 @@
, stop/0
%% log and log param
, dispatchLog/12
, doLogImpl/12
, dispatchLog/11
, doLogImpl/11
, safeFormat/3
, unsafeFormat/2
, getMd/0
@ -75,19 +75,17 @@ start() ->
stop() ->
application:stop(eLog).
-spec dispatchLog(atom(), lgAtomLevel(), pid(), node(), atom(), atom(), integer(), list(), string(), list() | none, pos_integer(), safe | unsafe) -> ok.
dispatchLog(Sink, Severity, Pid, Node, Module, Function, Line, Metadata, Format, Args, Size, Safety) ->
?eLogCfg:get(Sink) band Severity == Severity andalso doLogImpl(Severity, Pid, Node, Module, Function, Line, Metadata, Format, Args, Size, Sink, Safety).
doLogImpl(Severity, Pid, Node, Module, Function, Line, Metadata, Format, Args, Size, Sink, Safety) ->
TraceFilters = lgConfig:ptGet({Sink, trace}, []),
Destinations = ?lgCASE(TraceFilters =/= [], lgUtil:check_traces(Metadata, Severity, TraceFilters, []), []),
-spec dispatchLog(atom(), lgAtomLevel(), pid(), atom(), atom(), integer(), list(), string(), list() | none, pos_integer(), safe | unsafe) -> ok.
dispatchLog(Sink, Severity, Pid, Module, Function, Line, Metadata, Format, Args, Size, Safety) ->
?eLogCfg:get(Sink) band Severity == Severity andalso doLogImpl(Severity, Pid, Module, Function, Line, Metadata, Format, Args, Size, Sink, Safety).
doLogImpl(Severity, Pid, Module, Function, Line, Metadata, Format, Args, Size, Sink, Safety) ->
% TraceFilters = lgConfig:ptGet({Sink, trace}, []), %%
% Destinations = [], % %% ?lgCASE(TraceFilters =/= [], lgUtil:check_traces(Metadata, Severity, TraceFilters, []), []),
MsgStr = ?lgCASE(Args =/= [] andalso Args =/= undefined, ?lgCASE(Safety == safe, safeFormat(Format, Args, [{charsLimit, Size}]), unsafeFormat(Format, Args)), Format),
NowMs = lgTime:nowMs(),
LgMsg = #lgMsg{severity = Severity, pid = Pid, node = Node, module = Module, function = Function, line = Line, metadata = Metadata, timestamp = NowMs, message = MsgStr, destinations = Destinations},
case lgConfig:ptGet({Sink, async}, false) of
LgMsg = #lgMsg{severity = Severity, pid = Pid, module = Module, function = Function, line = Line, metadata = Metadata, timestamp = NowMs, message = MsgStr, destinations = []},
case lgConfig:ptGet({Sink, async}, true) of
true ->
gen_emm:info_notify(Sink, {mWriteLog, LgMsg});
_ ->

+ 7
- 7
src/errLogger/lgErrLoggerH.erl Прегледај датотеку

@ -45,30 +45,30 @@
true ->
if
is_pid(PidOrMd) ->
eLog:doLogImpl(Severity, PidOrMd, node(), 'Undef', 'Undef', 0, [], Msg, [], -1, Sink, safe);
eLog:doLogImpl(Severity, PidOrMd, 'Undef', 'Undef', 0, [], Msg, [], -1, Sink, safe);
is_list(PidOrMd) ->
{_, LogPid} = lists:keyfind(pid, 1, PidOrMd),
eLog:doLogImpl(Severity, LogPid, node(), 'Undef', 'Undef', 0, lists:keydelete(pid, 1, PidOrMd), Msg, [], -1, Sink, safe);
eLog:doLogImpl(Severity, LogPid, 'Undef', 'Undef', 0, lists:keydelete(pid, 1, PidOrMd), Msg, [], -1, Sink, safe);
true ->
eLog:doLogImpl(Severity, list_to_pid("<0.0.0>"), node(), 'Undef', 'Undef', 0, [], Msg, [{tag, PidOrMd}], -1, Sink, safe)
eLog:doLogImpl(Severity, list_to_pid("<0.0.0>"), 'Undef', 'Undef', 0, [], Msg, [{tag, PidOrMd}], -1, Sink, safe)
end,
logged;
_ -> no_log
end).
% doLogImpl(Severity, Pid, Node, Module, Function, Line, Metadata, Format, Args, Size, Sink, Safety)
% doLogImpl(Severity, Pid, Module, Function, Line, Metadata, Format, Args, Size, Sink, Safety)
-define(LOGFMT(Sink, Severity, PidOrMd, Fmt, Args),
case ?LgShouldLog(Sink, Severity) of
true ->
if
is_pid(PidOrMd) ->
eLog:doLogImpl(Severity, PidOrMd, node(), 'Undef', 'Undef', 0, [], Fmt, Args, -1, Sink, safe);
eLog:doLogImpl(Severity, PidOrMd, 'Undef', 'Undef', 0, [], Fmt, Args, -1, Sink, safe);
is_list(PidOrMd) ->
{_, LogPid} = lists:keyfind(pid, 1, PidOrMd),
eLog:doLogImpl(Severity, LogPid, node(), 'Undef', 'Undef', 0, lists:keydelete(pid, 1, PidOrMd), Fmt, Args, -1, Sink, safe);
eLog:doLogImpl(Severity, LogPid, 'Undef', 'Undef', 0, lists:keydelete(pid, 1, PidOrMd), Fmt, Args, -1, Sink, safe);
true ->
eLog:doLogImpl(Severity, list_to_pid("<0.0.0>"), node(), 'Undef', 'Undef', 0, [{tag, PidOrMd}], Fmt, Args, -1, Sink, safe)
eLog:doLogImpl(Severity, list_to_pid("<0.0.0>"), 'Undef', 'Undef', 0, [{tag, PidOrMd}], Fmt, Args, -1, Sink, safe)
end,
logged;
_ -> no_log

+ 4
- 4
src/formatter/lgFmtTer.erl Прегледај датотеку

@ -72,14 +72,14 @@ fmtCfg(MetaWhitelist) ->
output(message, LgMsg) -> LgMsg#lgMsg.message;
output(datetime, LgMsg) -> lgUtil:msToBinStr(LgMsg#lgMsg.timestamp);
output(pid, LgMsg) -> pid_to_list(LgMsg#lgMsg.pid);
output(node, LgMsg) -> atom_to_binary(LgMsg#lgMsg.node, utf8);
output(node, _LgMsg) -> ?eLogCfg:get(?eLogNodeName);
output(module, LgMsg) -> atom_to_binary(LgMsg#lgMsg.module, utf8);
output(function, LgMsg) -> atom_to_binary(LgMsg#lgMsg.function, utf8);
output(line, LgMsg) -> integer_to_binary(LgMsg#lgMsg.line);
output(severity, LgMsg) -> loSeverity(LgMsg#lgMsg.severity);
output(upSeverity, LgMsg) -> upSeverity(LgMsg#lgMsg.severity);
output(blank, _LgMsg) -> <<" ">>;
output(node, LgMsg) -> atom_to_binary(LgMsg#lgMsg.node, utf8);
output(node, _LgMsg) -> ?eLogCfg:get(?eLogNodeName);
output(sev, LgMsg) -> sevSeverity(LgMsg#lgMsg.severity);
output(metadata, LgMsg) -> mdJoin(LgMsg#lgMsg.metadata, <<"|">>, <<>>);
output({blank, Fill}, _LgMsg) -> Fill;
@ -113,14 +113,14 @@ output(Other, _) -> makeStr(Other).
output(message, LgMsg, _Width) -> LgMsg#lgMsg.message;
output(datetime, LgMsg, _Width) -> lgUtil:msToBinStr(LgMsg#lgMsg.timestamp);
output(pid, LgMsg, _Width) -> pid_to_list(LgMsg#lgMsg.pid);
output(node, LgMsg, _Width) -> atom_to_binary(LgMsg#lgMsg.node, utf8);
output(node, _LgMsg, _Width) -> ?eLogCfg:get(?eLogNodeName);
output(module, LgMsg, _Width) -> atom_to_binary(LgMsg#lgMsg.module, utf8);
output(function, LgMsg, _Width) -> atom_to_binary(LgMsg#lgMsg.function, utf8);
output(line, LgMsg, _Width) -> integer_to_binary(LgMsg#lgMsg.line);
output(severity, LgMsg, _Width) -> loSeverity(LgMsg#lgMsg.severity);
output(upSeverity, LgMsg, _Width) -> upSeverity(LgMsg#lgMsg.severity);
output(blank, _LgMsg, _Width) -> <<" ">>;
output(node, LgMsg, _Width) -> atom_to_binary(LgMsg#lgMsg.node, utf8);
output(node, _LgMsg, _Width) -> ?eLogCfg:get(?eLogNodeName);
output(sev, LgMsg, _Width) -> sevSeverity(LgMsg#lgMsg.severity);
output({blank, Fill}, _LgMsg, _Width) -> Fill;
output(metadata, LgMsg, _Width) -> mdJoin(LgMsg#lgMsg.metadata, <<"|">>, <<>>);

Loading…
Откажи
Сачувај