We've investigated and `lager:info/2` expands to:

```
case {whereis(lager_event),
                lager_config:get(loglevel, {0, []})}
              of
            {undefined, _} ->
                fun () -> {error, lager_not_running} end();
            {__Pidlogplex_api569,
             {__Levellogplex_api569, __Traceslogplex_api569}}
                when __Levellogplex_api569 band 64 /= 0 orelse
                       __Traceslogplex_api569 /= [] ->
                lager:do_log(info,
                             [{application, logplex}, {module, logplex_api},
                              {function, tail_loop}, {line, 569},
                              {pid, pid_to_list(self())}, {node, node()}
                              | lager:md()],
                             "pid=~p m=~p ln=~p class=info " ++
                               "at=tail_loop event=tail_close reason=tcp_clos"
                               "ed channel_id=~p reason=~p bytes_sent=~p",
                             [self(), logplex_api, 569, ChannelId, Reason,
                              BytesSent],
                             4096, 64, __Levellogplex_api569,
                             __Traceslogplex_api569, __Pidlogplex_api569);
            _ -> ok
          end
```
Which does some complex logging detection. We decided to leave it as is for now at least, and use the parse-transforms.