我最近发现自己正在处理多处理,我有大约10个进程同时在不同文件上但在同一控制台(Eclipse控制台)上打印。每个过程的打印量约为每秒40至50行。 我正在使用分别为每个进程实例化的Logger对象,以及将消息的时间戳,级别和标记添加到消息中以进行打印和打印消息的打印方法。发生的情况是某些行正确打印,而另一些行则打印在同一行上,这显然是因为它们在相同的准确时间打印。
我得到的输出是:
2018/09/05 10:43:20.362 | INFO | P1 | ------------------------------------------------------------------------
2018/09/05 10:43:20.362 | INFO | P1 | Processing line 208
2018/09/05 10:43:20.362 | INFO | P1 | ------------------------------------------------------------------------
2018/09/05 10:43:20.378 | INFO | P1 | Processing line 209
2018/09/05 10:43:20.378 | INFO | P1 | ------------------------------------------------------------------------
2018/09/05 10:43:20.378 | INFO | P1 | ------------------------------------------------------------------------2018/09/05 10:43:20.378 | P2 | Processing line 107
2018/09/05 10:43:20.378 | INFO | P2 | ------------------------------------------------------------------------
2018/09/05 10:43:20.384 | INFO | P2 | Processing line 108
2018/09/05 10:43:20.384 | INFO | P2 | ------------------------------------------------------------------------2018/09/05 10:43:20.384 | P1 | ------------------------------------------------------------------------
2018/09/05 10:43:20.384 | INFO | P1 | Processing line 210
2018/09/05 10:43:20.384 | INFO | P1 | ------------------------------------------------------------------------
我想要的是:
2018/09/05 10:43:20.362 | INFO | P1 | ------------------------------------------------------------------------
2018/09/05 10:43:20.362 | INFO | P1 | Processing line 208
2018/09/05 10:43:20.362 | INFO | P1 | ------------------------------------------------------------------------
2018/09/05 10:43:20.378 | INFO | P1 | Processing line 209
2018/09/05 10:43:20.378 | INFO | P1 | ------------------------------------------------------------------------
2018/09/05 10:43:20.378 | INFO | P1 | ------------------------------------------------------------------------
2018/09/05 10:43:20.378 | INFO | P2 | Processing line 107
2018/09/05 10:43:20.378 | INFO | P2 | ------------------------------------------------------------------------
2018/09/05 10:43:20.384 | INFO | P2 | Processing line 108
2018/09/05 10:43:20.384 | INFO | P2 | ------------------------------------------------------------------------
2018/09/05 10:43:20.384 | INFO | P1 | ------------------------------------------------------------------------
2018/09/05 10:43:20.384 | INFO | P1 | Processing line 210
2018/09/05 10:43:20.384 | INFO | P1 | ------------------------------------------------------------------------
在上面的示例中,我仅显示了INFO行,但是如果在处理该行时发生了某些情况,我将获得下一个打印错误,以描述发生的错误。我尝试仅打印ERROR行,并且由于没有多少要打印,因此可以正常工作。但是有时候仅仅有错误是不够的。除了“正在处理的行”之外,还有其他行告诉我的内容更多,我不能从控制台中错过它们,我必须打开文件才能看到它们。
现在,我想知道是否可以访问正在打印到控制台的数据或对打印进行全局锁定。 我还考虑使用并行Logger来获取进程的所有标准输出并在打印之前对其进行处理,但这意味着我应该跟踪哪个进程进行了打印并将其写入特定文件。
有什么建议吗?