I'd like to request the following logger feature.

a. Replace the logger:log/3 call by macros:

-define(LOG_DEBUG(A, B),  logger:log(debug, A, B)).
-define(LOG_ERROR(A, B),  logger:log(error, A, B)).
-define(LOG_NORMAL(A, B), logger:log(normal, A, B)).

This way it'll be easy to exclude logging of specific types from 
compilation when not needed.

3. Replace the 3rd parameter of logger:log/3 by a macro:

-define(LAZY(L), fun() -> L end).

Sample call:


   logger:log(debug, "test ~s", [list:flatten(["one", " ", "two"])).


   logger:log(debug, "test ~s", ?LAZY([list:flatten(["one", "two"]))).

Why is it needed?

This way it'll be possible to enable/disable log level logging without 
recompilation, and not to have performance impact because of strict 
evaluation of parameters in the call to the logger when no logging is 

The logger:log/3 function would then do:

log(A, B, F) when is_function(F) ->
     log(A, B, F());
log(A, B, C) ->

What do you think?


Serge Aleynikov
Routing R&D, IDT Telecom
Tel: +1 (973) 438-3436
Fax: +1 (973) 438-1464
Yxa-devel mailing list

Reply via email to