Support module level logger header
This commit is contained in:
parent
3f1b788fe8
commit
c64751a53c
|
@ -14,6 +14,8 @@
|
|||
|
||||
%% debug | info | notice | warning | error | critical | alert | emergency
|
||||
|
||||
-compile({parse_transform, emqx_logger}).
|
||||
|
||||
-define(DEBUG(Format), ?LOG(debug, Format, [])).
|
||||
-define(DEBUG(Format, Args), ?LOG(debug, Format, Args)).
|
||||
|
||||
|
@ -39,5 +41,5 @@
|
|||
|
||||
-define(LOG(Level, Format, Args),
|
||||
begin
|
||||
(logger:log(Level,#{},#{report_cb => fun(_) -> {(Format), (Args)} end}))
|
||||
(logger:log(Level,#{},#{report_cb => fun(_) -> {'$logger_header'()++(Format), (Args)} end}))
|
||||
end).
|
||||
|
|
|
@ -48,6 +48,8 @@
|
|||
, get_log_handler/1
|
||||
]).
|
||||
|
||||
-export([parse_transform/2]).
|
||||
|
||||
%%------------------------------------------------------------------------------
|
||||
%% APIs
|
||||
%%------------------------------------------------------------------------------
|
||||
|
@ -120,6 +122,9 @@ set_log_level(Level) ->
|
|||
{error, Error} -> {error, {primary_logger_level, Error}}
|
||||
end.
|
||||
|
||||
parse_transform(AST, _Opts) ->
|
||||
trans(AST, "", []).
|
||||
|
||||
%%------------------------------------------------------------------------------
|
||||
%% Internal Functions
|
||||
%%------------------------------------------------------------------------------
|
||||
|
@ -160,3 +165,26 @@ rollback([{ID, Level} | List]) ->
|
|||
rollback(List);
|
||||
rollback([]) -> ok.
|
||||
|
||||
%% Generate a function '$logger_header'/0 into the source code
|
||||
trans([], LogHeader, ResAST) ->
|
||||
lists:reverse([header_fun(LogHeader) | ResAST]);
|
||||
trans([{eof, L} | AST], LogHeader, ResAST) ->
|
||||
lists:reverse([{eof, L}, header_fun(LogHeader) | ResAST]) ++ AST;
|
||||
trans([{attribute, _, module, _Mod} = M | AST], Header, ResAST) ->
|
||||
trans(AST, Header, [export_header_fun(), M | ResAST]);
|
||||
trans([{attribute, _, logger_header, Header} | AST], _, ResAST) ->
|
||||
trans(AST, Header, ResAST);
|
||||
trans([F | AST], LogHeader, ResAST) ->
|
||||
trans(AST, LogHeader, [F | ResAST]).
|
||||
|
||||
export_header_fun() ->
|
||||
{attribute,erl_anno:new(0),export,[{'$logger_header',0}]}.
|
||||
|
||||
header_fun(LogHeader) ->
|
||||
L = erl_anno:new(0),
|
||||
{function,L,'$logger_header',0,
|
||||
[{clause,L,
|
||||
[], [], [{string,L,pad(LogHeader)}]}]}.
|
||||
|
||||
pad("") -> "";
|
||||
pad(Str) -> Str ++ " ".
|
||||
|
|
Loading…
Reference in New Issue