[erlang-questions] Logging interprocess communication

Joe Armstrong <>
Sun Dec 9 15:13:31 CET 2012


This is *exactly* what the trace BIFs are for

erlang:trace(PidSpec, Bool, TraceFlags) does what you want.

Here is an example:

-module(tracer).
-export([start/0, loop/0, watch/1]).

start() ->
    Pid = spawn(tracer, loop, []),
    spawn(tracer, watch, [Pid]),
    Pid.

loop() ->
    receive
Any ->
    io:format("I got:~p~n",[Any]),
    loop()
    end.

watch(Pid) ->
    erlang:trace(Pid, true, [send, timestamp]),
    watch().

watch() ->
    receive
Any ->
    io:format("watch got:~p~n",[Any]),
    loop()
    end.

In the shell

2> c(tracer).
{ok,tracer}
3> Pid = tracer:start().
<0.43.0>
4> Pid ! hello.
I got:hello
hello
watch got:{trace_ts,<0.43.0>,send,
              {io_request,<0.43.0>,<0.24.0>,
                  {put_chars,unicode,io_lib,format,["I got:~p~n",[hello]]}},
              <0.24.0>,
              {1355,61952,458716}}

The line

 erlang:trace(Pid, true, [send, timestamp]),

means

"trace the process Pid and tell me about all messages it sends, an include a
time stamp. "Tell me" here means 'send me a message'

This is described (with examples) in my book and in Francesco and Simon's
book, and at http://www.erlang.org/doc/man/erlang.html#trace-3

Cheers

/Joe




On Sun, Dec 9, 2012 at 2:35 PM, Yash Ganthe <> wrote:

>
> Hi,
>
> In an Erlang VM when one process send a message to another using: Pid !
> MyMessage we would like to log this interaction to a log file. We need to
> do this without having the developer introduce explicit log statements all
> over the code wherever one process communicates with another.
>
> What is the best way to achieve this?
>
> Thanks,
> Yash
> --
> Using Opera's revolutionary email client: http://www.opera.com/mail/
> ______________________________**_________________
> erlang-questions mailing list
> 
> http://erlang.org/mailman/**listinfo/erlang-questions<http://erlang.org/mailman/listinfo/erlang-questions>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20121209/408ea35e/attachment.html>


More information about the erlang-questions mailing list