[erlang-questions] how: logging messages to another node
Jay Nelson
jay@REDACTED
Thu Nov 1 07:01:56 CET 2007
I am working on a scenario with diskless nodes talking to a back end
node with a disk. I want to forward error_logger messages to the
backend node. Here is the chain of events:
1) Start the diskless node
a) installs an event_handler to capture error_logger messages
b) messages are queued up until the backend node connects
2) Start the backend node
3) Detect node up and forward messages to backend
I could put a server on the backend node and forward messages to it,
but it seemed that there should be a way to leverage the existing
error_logger. My first attempts were trying to get the process id of
the error_logger on another node, but there was no way to do this
that I could find. I could monitor that process using {error_logger,
Node} but I couldn't figure out a way to remotely obtain the
process_id. Is there a way?
I have a working version now, which feels a bit of a hack to me which
works as follows:
Backend machine:
- global:register_name(logger, whereis(error_logger)).
Diskless machine:
- Pid = global:whereis_name(logger),
- group_leader(Pid, self()),
- error_logger:error_report(Msg)
Voila, the message appears on the backend node. I don't like the
idea of using the group_leader / error_logger approach or the magic
'logger' global name. It seems there should be an easier way to
reach out to the remote error_logger process, especially since I can
monitor it using the {RegName, Node}, but I can't find any other
functions for discovering the process_id.
Any suggestions for an alternate approach?
jay
More information about the erlang-questions
mailing list