问题描述
||
我正在控制台上查看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,报告的顺序还能在哪里改变?