[erlang-questions] Integrating lager into our app
Martin Koroudjiev
mrtndimitrov@REDACTED
Thu Jan 21 16:40:46 CET 2016
Thank you very much for the explanation.
Regards,
Martin
On 1/21/2016 5:12 PM, Sean Cribbs wrote:
> What the message is telling you is that lager:debug() is not a
> function. Indeed, if you read the source of the lager module, it is not.
>
> The parse_transform is needed to inject code into the spot where you
> call lager:debug() and replace it with real calls. It is designed this
> way so as to provide an unsurprising interface to the developer
> (logging at specific severity levels), and so that it can filter out
> unconsumable log messages at the callsite rather than filtering them
> out in the gen_event that receives the log messages. Essentially, the
> code injection transforms the function name ('debug' in this case)
> into the severity level, adds some metadata to the message (line,
> module, pid, etc), and then does a few checks to verify that the
> message is loggable. For instance, it will check whether the log sink
> process is running, and that there exists at least one output handler
> that is consuming that severity or lower, or that there is an existing
> trace that matches. Only *then* will it log the message.
>
> I would recommend using rebar3 or similar tools that can apply the
> parse_transform across all of your code, instead of calling erlc directly.
>
>
>
> On Thu, Jan 21, 2016 at 8:56 AM, Martin Koroudjiev
> <mrtndimitrov@REDACTED <mailto:mrtndimitrov@REDACTED>> wrote:
>
> Hello,
>
> I am trying to include lager into our application but I am having
> problems. I include the lager ebin directory on startup with: -pa
> "../lib/lager-2.0.3/ebin"
> Then I start lager with: lager:start().
> I define a constant as: -define(dbg(Fmt), lager:debug(Fmt)).
> But when I try to use it in the code:
> ?dbg("Hello").
> it says: ** exception error: undefined function lager:debug/1
>
> I've checked lager's help page on github and saw that a
> parse_transform
> must be set to lager_transform. Why is this needed?
>
> And how to actually do it? I compile my source files with erlc and
> pass
> the transform option with +"{parse_transform, lager_transform}"
> but then
> the code doesn't compile because lager_transform module is not present
> at that time.
>
> Thank you,
> Martin
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED <mailto:erlang-questions@REDACTED>
> http://erlang.org/mailman/listinfo/erlang-questions
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20160121/fc1c142f/attachment.htm>
More information about the erlang-questions
mailing list