定期从日志文件中读取数据

时间:2011-11-30 09:54:46

标签: java file-io scheduled-tasks scheduling

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

4 个答案:

答案 0 :(得分:4)

打开文件并有一个循环,

  • 获取尺寸并与您已阅读的尺寸进行比较。
  • 如果大小增加,请读取多个字节而不是更多。这样做意味着您可以稍后阅读。
  • 如果尺寸缩小,请关闭文件并重新开始。

您可以使用FileInputStream或RandomAccessFile。

答案 1 :(得分:1)

如果要运行程序以定期读取日志文件,则可以使用 Quartz Scheduler之类的调度程序定期运行它。

答案 2 :(得分:1)

使用unix命令'tail',选项'-f'和'-F'用于同一个命令也非常方便。

请点击此处http://www.thegeekstuff.com/2009/08/10-awesome-examples-for-viewing-huge-log-files-in-unix/查看示例,或直接查看示例。

答案 3 :(得分:0)

RandomAccessFile是一个不错的选择。如果您离开申请表,您必须在离开前坚持上次阅读的地方,以避免重读信息。

另一方面,对于繁重的事件流,日志文件往往会变得非常大。旋转日志文件将允许您将问题转移到文件命名。您可以将系统配置为每天生成一个日志文件,如下所示:

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

如果您获得的文件仍然非常大,您可以按日期和时间轮换它们,您还可以将小时作为文件名的一部分。然后,您的文件可以每三小时甚至每小时轮换一次。这将为您提供更多日志文件,但它们会更小,因此更容易处理。您要查找的日期和时间范围将是文件名的一部分。

您还可以按文件大小进行旋转。如果您选择最大文件大小,您可以避免完全随机访问一个巨大的文件。