[erlang-questions] getting the error (after the fact) in an Erlang process?

Raimo Niskanen raimo+erlang-questions@REDACTED
Thu Mar 2 09:53:45 CET 2017

On Wed, Mar 01, 2017 at 09:06:47PM +0000, Vans S wrote:
> Before I was doing something like:
> spawn_monitor(fun() -> {ok, F} = file:open("/hi", [write]), group_leader(F, self()) end).
> Now this processes error messages after a crash out go to the hi file.

That redirects all process standard output to the file e.g io:format
printouts.  I did not know that the process exit message also lands there,
a bit surprised actually.  I would have guessed such messages were printed
with error_logger, see below.

> Now what I have is a [1] supervisor -> [1] gen_server, trap_exit, start_link -> [many] gen_statem
> When the gen_statem changes group_leader like that to a file, the errors do not go to the file.
> Is this because of how gen_*,trap_exit, and start_link work and whatnot?
> Does anyone know a way to keep this relationship but also have the error+stacktrace forwarded to the
> group leader?

gen_* like like all processes adhering to OTP design principals print their
events through error_logger: http://erlang.org/doc/man/error_logger.html

This is to collect all system logs in one place.

In production you often run the node via run_erl, which puts the system
logs in rotating log files.  Is this what you are aiming for?

> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions


/ Raimo Niskanen, Erlang/OTP, Ericsson AB

More information about the erlang-questions mailing list