Support module level logger header

This commit is contained in:
terry-xiaoyu 2019-06-15 12:55:13 +08:00 committed by Feng Lee
parent 3f1b788fe8
commit c64751a53c
2 changed files with 31 additions and 1 deletions

View File

@ -14,6 +14,8 @@
%% debug | info | notice | warning | error | critical | alert | emergency %% debug | info | notice | warning | error | critical | alert | emergency
-compile({parse_transform, emqx_logger}).
-define(DEBUG(Format), ?LOG(debug, Format, [])). -define(DEBUG(Format), ?LOG(debug, Format, [])).
-define(DEBUG(Format, Args), ?LOG(debug, Format, Args)). -define(DEBUG(Format, Args), ?LOG(debug, Format, Args)).
@ -39,5 +41,5 @@
-define(LOG(Level, Format, Args), -define(LOG(Level, Format, Args),
begin begin
(logger:log(Level,#{},#{report_cb => fun(_) -> {(Format), (Args)} end})) (logger:log(Level,#{},#{report_cb => fun(_) -> {'$logger_header'()++(Format), (Args)} end}))
end). end).

View File

@ -48,6 +48,8 @@
, get_log_handler/1 , get_log_handler/1
]). ]).
-export([parse_transform/2]).
%%------------------------------------------------------------------------------ %%------------------------------------------------------------------------------
%% APIs %% APIs
%%------------------------------------------------------------------------------ %%------------------------------------------------------------------------------
@ -120,6 +122,9 @@ set_log_level(Level) ->
{error, Error} -> {error, {primary_logger_level, Error}} {error, Error} -> {error, {primary_logger_level, Error}}
end. end.
parse_transform(AST, _Opts) ->
trans(AST, "", []).
%%------------------------------------------------------------------------------ %%------------------------------------------------------------------------------
%% Internal Functions %% Internal Functions
%%------------------------------------------------------------------------------ %%------------------------------------------------------------------------------
@ -160,3 +165,26 @@ rollback([{ID, Level} | List]) ->
rollback(List); rollback(List);
rollback([]) -> ok. 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 ++ " ".