Почему сообщения error_logger на консоли в другом порядке по сравнению с файлом error_logger_mf - PullRequest
1 голос
/ 28 мая 2011

Я просматриваю сообщения error_logger на консоли и одновременно сохраняю их в файле с error_logger_mf.

Сообщения совершенно в другом порядке, если я смотрю на файл и консоль.

Все метки времени показывают одно и то же значение, поэтому оно идет довольно быстро, и я понимаю, что сообщения могут выходить из строя при отправке из разных процессов.

Но я всегда думал, что после достижения error_logger они сохраняются в том же порядке, когда они отправляются различным обработчикам событий.

Что я вижу, что в файлах (когда я смотрю на это с rb) события выходят в более разумном порядке, чем на консоли.

Пояснение:

Ясно, что порядок, в котором сообщения от разных процессов приходят к error_logger, не следует воспринимать слишком серьезно.

Чего я не понимаю, так это разницы в порядке, когда я сравниваю журнал диска с журналом экрана.


Добавлен ответ в виде вики сообщества с моими частичными выводами ниже, пожалуйста, отредактируйте, если вам известны дополнительные пункты.

1 Ответ

0 голосов
/ 28 мая 2011

Обновление: это все еще не решено, не стесняйтесь добавлять в это сообщество вики, если вы что-то знаете

Сделали некоторые поиски в источнике, но пока не нашли решения загадки:

Заглянул в 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?

...