Re: OTP-24 and lager and line numbers

Roger Lipscombe <[email protected]>
Newsgroups gmane.comp.lang.erlang.general
Message-ID <CAJgnQd8VX5uK+W-j0hmm9wCkv3xz_wCksgdf6SoH9GnBUKucZw@mail.gmail.com>
On Thu, 10 Jun 2021 at 20:14, Roger Lipscombe <[email protected]> wrote:
>
> I'm migrating a large project to OTP-24.x, and it seems that my line
> numbers are tuples by the time they appear in my logs.
>
> How best to work around this? We're not in a position to rip out lager
> just yet. Using lager 3.9.2.

Let me restate the problem:

When compiling with OTP-24, if I use (e.g.) lager:info("Hello World!")
in my code, the lager_default_formatter expands 'line' to a tuple. The
first value is the line number; I don't know what the second value is.
In theory, it's the column number, but it doesn't correlate with
anything obvious, and I suspect that it's been messed up by lager's
parse transform anyway.

In OTP-23, 'line' would have been the integer line number.

The problem appears to be that where OTP-23's AST (as passed to the
parse transform) would have had an integer for the line number, OTP-24
passes a tuple[1] of {Line, Col}. lager, for better or worse,
passes[2] this all the way through to the logging backend (and thus
formatter), which just spits it straight out.

I was hoping not to have to fork lager to deal with this.

[1] Using beam_lib:chunks to look at the abstract_code chunk, I see a
tuple for the location.
[2] If I add some is_integer guards to the parse transform, it fails
as expected.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.