Re: OTP-24 and lager and line numbers
Roger Lipscombe <[email protected]>
| Newsgroups | gmane.comp.lang.erlang.general |
|---|---|
| Message-ID | <CAJgnQd_Shpz7n50beYVF+P91Mvn=7mzqrnZCmP8kcvTKQDgNFA@mail.gmail.com> |
I've filed https://github.com/erlang-lager/lager/issues/558 On Fri, 11 Jun 2021 at 14:20, Tristan Sloughter <[email protected]> wrote: > > Should open an issue with lager since they have merged some PRs that were meant to fix this but must not have worked https://github.com/erlang-lager/lager/issues/555 > > And try 3.9.0 since that appears to be the first release with OTP-24 fixes and maybe it broke in the following changes. > > On Fri, Jun 11, 2021, at 06:00, Roger Lipscombe wrote: > > 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. > >