2011-11-30 70 views
1

我正在生成一个日志文件,我想要的是我要定期读取数据,而不必每次都从头读取数据。任何人都可以帮忙定期从日志文件中读取数据

+0

一个例子会有所帮助。 – Rookie

+0

你已经完成的一个例子也会有所帮助。 ;) –

回答

4

打开该文件,并有一个循环,

  • 得到的大小和与您已经阅读大小比较。
  • 如果大小已经增长,请阅读许多字节并且不再更多。这样做意味着您可以稍后阅读更多内容。
  • 如果尺寸缩小,请关闭文件并重新开始。

您可以使用FileInputStream或RandomAccessFile。

+0

是md5sum更合适,如果这是被接受的解决方案? –

+0

@NehalDattani,你有什么想法? –

+0

这是一个很好的答案。 –

1

如果您想要运行一个程序来定期读取您的日志文件,那么您可以使用调度程序 Quartz Scheduler来定期运行它。

0

RandomAccessFile是一个不错的选择。如果您离开应用程序,您必须在离开前坚持上次读取的位置,以避免重新读取信息。

另一方面,日志文件对于重大事件流程往往变得相当大。旋转日志文件可以让你将问题转向文件命名。你可以配置你的系统每天产生一个日志文件喜欢这里:

app_access.2011-11-28.log, 
app_access.2011-11-29.log, 
app_access.2011-11-30.log, 
... 

如果你得到的文件仍是非常大的,你可以按日期和时间旋转他们,你也将有每小时的一部分文件名。然后你的文件可以旋转,比方说,每三个小时甚至每一个小时。这会给你更多的日志文件来读取,但它们会更小,因此更容易处理。您要查找的日期和时间范围将成为文件名的一部分。

您还可以通过文件大小额外旋转。如果您选择可以处理的最大文件大小,则可以避免完全随机访问大型文件。