Make an unhandled exception more noisy

I have a process, using gen_statem, which was crashing (and being restarted by a supervisor) because of an unhandled exception.

When I first encountered the issue while debugging it was clear that the process was restarting, but the unhandled exception didn’t cause anything to be printed to the console. It would silently fail, the supervisor would restart things, and the cycle would continue.

Tracking down the issue would have been much faster if the exception had been more “noisy”. I tried using the :debug option for my server with both “:trace” and “:log” - while it was interesting to see the system messages the exception was still silently raised and handled.

Is there something I could have done to make the unhandled exception more “noisy”, at least in dev mode, so I could have come to a resolution more swiftly?

2 Likes

Enable the built-in sasl app, but be warned, it will be VERY noisy. It logs all OTP process creation and crashes and so forth.

3 Likes

For what is worth, updating this thread after 5 years.

Fortunately now (since Erlang/OTP 21) a new improved logger exists, which deprecates the sasl app.

Quote from SASL Error Logging — sasl v4.2.2 as of today:

The SASL error logging concept described in this section is deprecated since Erlang/OTP 21.0, when the new logging API was introduced.

The new default behaviour is that the SASL application no longer affects which log events that are logged. Supervisor reports and crash reports are logged via the default logger handler which is setup by Kernel. Progress reports are by default not logged, but can be enabled by setting the primary log level to info, for example by using the Kernel configuration parameter logger_level.