Обновление: это все еще не решено, не стесняйтесь добавлять в это сообщество вики, если вы что-то знаете
Сделали некоторые поиски в источнике, но пока не нашли решения загадки:
Заглянул в error_logger_tty_h.erl
, который должен отвечать за вывод на консоль:
handle_event({_Type, GL, _Msg}, State) when node(GL) =/= node() ->
{ok, State};
handle_event(Event, State) ->
write_event(tag_event(Event)),
{ok, State}.
Так что события, у которых есть group_leader на другом узле, игнорируются, все не игнорируемое пропускается через write_event/1
.Который выполняет некоторое форматирование и затем выводит результат с:
format(String) -> io:format(user, String, []).
format(String, Args) -> io:format(user, String, Args).
В user.erl
, где io:format
отправляет свой io_request, у нас есть один серверный цикл, вызывающий каскад функций, которые в конечном итоге отправляют текст в порт tty,
Ни в коем случае нет сообщений, отправленных более чем одним процессом!
Поэтому я не вижу способа изменить порядок сообщений во время поездки в tty..
Где еще может меняться порядок отчетов в зависимости от того, отправляются ли сообщения в tty или в mf?