2016-04-29 74 views
0

我已经用java编写了一个应用程序,并将它部署在unix服务器上。 我已经实现了日志记录在我的应用程序和记录在一个文件中生成的说X.log.txt从两个同时进程记录

如果我运行使用不同的用户或单个用户不同的会话我罐子的多个实例:
是否有机会,我在X.log.txt日志混合?
还是会以FCFS的方式??


示例:让P1和P2是两个正在调用java应用程序并正在生成日志的进程。

P1和P2将同时写入其个别日志至X.log.txt。这个陈述是真实的吗?还是完全基于CPU调度算法(FCFS,SJF等)?

即使我不使用时间戳它的工作对我来说很好。 当我执行它们时,日志会一个接一个地产生,意思是对于一个特定的实例,所有的日志都写入文件中,然后写入下一个实例。我的问题仍然是开放的,全部是基于我们的处理器编写来处理工作的方式,还是其他一些东西?

回答

0

如果两个进程写入同一个日志文件,数据将被随机破坏。您将在中间切割线,并完成其他日志中的数据。你甚至可以在文件的不同位置以二进制零为好,这取决于操作系统(并且在某些操作系统中,它只会无法在同一时间从两个位置写入同一文件)。

写入单独的文件,然后使用某些第三方工具加入/浏览它们以获取按时间戳排列的视图。

+0

或通过发送到接受来自多个来源的完整日志消息并将它们写入单个日志文件的日志记录进程进行日志记录。 (就像'syslog'一样,因为OP在Unix系统上)。 –

0

如果你的两个进程写入相同的目录和文件路径,你会得到一些奇怪的行为。根据您的实现,两个应用程序将同时写入文件,或者一个应用程序将阻止另一个写入。

我的建议是在运行时生成日志文件的名称和追加独特的像一个时间戳或PID(进程ID)的东西,所以没有更多的冲突:

X.log.[PID].txtX.log.[TIMESTAMP].txt

注意:必须在时间戳(秒或纳秒)内使用足够低的分辨率来避免名称冲突。

相关问题