为什么error_logger消息在控制台上与error_logger_mf文件相比顺序不同

问题描述

|| 我正在控制台上查看error_logger消息,并将它们同时存储在带有ѭ0的文件中。 如果我查看文件和控制台,则消息的顺序完全不同。 时间戳都显示相同的值,因此它的运行速度非常快,而且我的理解是,从不同进程发送消息时,消息可能会混乱。 但是我一直认为,一旦到达error_logger,它们在发送到不同的事件处理程序时将保持相同的顺序。 我在文件中看到的结果(当我用ѭ1键查看时)所产生的事件比在控制台上更为合理。 澄清: 显然,来自不同进程的消息到达error_logger的顺序不必太认真。 当我比较磁盘日志和屏幕日志时,我不了解顺序的区别。 在下面添加了我的部分发现,作为社区维基添加一个答案,如果您知道其他要点,请进行编辑。     

解决方法

        更新:这仍然没有解决,如果您知道一些话,随时添加到此社区Wiki 在源代码中进行了一些挖掘,但到目前为止,还没有解决难题的方法: 研究了ѭ2,它应该负责向控制台输出:
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,Args).
在“ 6”中,“ 7”发送其io_request,我们有一个服务器循环调用一系列函数,最终将文本发送到tty端口。 绝对不会有来自多个进程的消息发送! 所以我看不到去tty时消息改变顺序的任何方法。 根据消息是发送到tty还是发送到mf,报告的顺序还能在哪里改变?