diff --git a/README.org b/README.org index 22369b8..edb6abf 100644 --- a/README.org +++ b/README.org @@ -159,7 +159,7 @@ * Tracing Lager supports basic support for redirecting log messages based on log message - attributes. Lager automatically captures the module, function and line at the + attributes. Lager automatically captures the pid, module, function and line at the log message callsite. However, you can add any additional attributes you wish: #+BEGIN_EXAMPLE @@ -207,3 +207,10 @@ ... lager:stop_trace(Trace) #+END_EXAMPLE + + Tracing to a pid is somewhat of a special case, since a pid is not a + data-type that serializes well. To trace by pid, use the pid as a string: + +#+BEGIN_EXAMPLE + lager:trace_console([{pid, "<0.410.0>"}]) +#+END_EXAMPLE diff --git a/src/lager_transform.erl b/src/lager_transform.erl index 7a0d501..7947abb 100644 --- a/src/lager_transform.erl +++ b/src/lager_transform.erl @@ -65,9 +65,14 @@ transform_statement({call, Line, {remote, Line1, {atom, Line2, lager}, {atom, Line, module}, {atom, Line, get(module)}]}, {cons, Line, {tuple, Line, [ {atom, Line, function}, {atom, Line, get(function)}]}, - {cons, Line, {tuple, Line, [{atom, Line, line}, {integer, - Line, Line}]}, - {nil, Line}}}}, + {cons, Line, {tuple, Line, [ + {atom, Line, line}, + {integer, Line, Line}]}, + {cons, Line, {tuple, Line, [ + {atom, Line, pid}, + {call, Line, {atom, Line, pid_to_list}, [ + {call, Line, {atom, Line ,self}, []}]}]}, + {nil, Line}}}}}, {Traces, Arguments} = case Arguments0 of [Format] -> {DefaultAttrs, [Format, {nil, Line}]};