[erlang-questions] Architecture question: logging inside library

Chandru <>
Mon Jan 11 14:07:00 CET 2016


Have a log function such as this inside your library code.

log_msg(Fmt, Args) ->
    log_msg(application:get_env(my_library, logging_mf), Fmt, Args).

log_msg({ok, {Mod, Fun}}, Fmt, Args) when is_atom(Mod), is_atom(Fun) ->
    catch apply(Mod, Fun, [Fmt, Args]);
log_msg(_, _, _) ->
    ok.

That way, the user can control how the messages get logged.

cheers,
Chandru


On 11 January 2016 at 07:34, Max Lapshin <> wrote:

> Hi.
>
> As we know, it is good when library doesn't have any hardcoded
> dependencies at all.
>
> I don't understand what is a good way to remove lager (or any other
> logging library) from library dependencies.
>
>
> For example, we have an mpegts decoder/encoder library. This library takes
> binary and unpacks it to list of frames or packs back:
>
> mpegts_decoder:decode(Binary,  mpegts_decoder:init(Options)) ->  {ok,
> Frames, State}
>
>
> There are calls to lager in some places of code that are used for
> indicating some statuses:
>
> dump_psi(Decoder, NewPMT),
> lager:info("PMT: ~p", [Descriptors]),
> ...
>
>
> What is the proper way to refuse from adding logger as a dependency for
> such pure library?
> Pass a callback into  initialisation options?
>
>
>
> _______________________________________________
> erlang-questions mailing list
> 
> http://erlang.org/mailman/listinfo/erlang-questions
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20160111/7ce1882a/attachment.html>


More information about the erlang-questions mailing list