Когда процесс вызывает io:format()
и подобные функции, процесс отправляет сообщения запроса io своему процессу group_leader. Таким образом, простой взлом состоит в том, чтобы открыть файл и установить его как group_leader процессов, производящих вывод. Вот пример перенаправления вывода процесса оболочки в файл.
1> {ok, F} = file:open("z", [write]).
{ok,<0.36.0>}
2> group_leader(F, self()).
3> io:format("Where am I going to appear?~n").
4>
Это перенаправит только текущий процесс оболочки, поэтому вам придется установить group_leader для всех процессов, которые вы хотите перенаправить в файл.
Конечно, решение может быть улучшено, например, путем запуска серверного процесса, который передает сообщения запроса io в повернутые файлы и т. Д.