【发布时间】:2011-11-30 09:54:46
【问题描述】:
我正在生成一个日志文件,我想要的是定期读取数据,而不必每次都从头开始读取。谁能帮忙。
【问题讨论】:
-
你已经做过的一个例子也会有所帮助。 ;)
标签: java file-io scheduled-tasks scheduling
我正在生成一个日志文件,我想要的是定期读取数据,而不必每次都从头开始读取。谁能帮忙。
【问题讨论】:
标签: java file-io scheduled-tasks scheduling
打开文件并有一个循环,
您可以使用 FileInputStream 或 RandomAccessFile。
【讨论】:
使用 unix 命令 'tail',选项 '-f' 和 '-F' 用于同一个命令也很方便。
请参阅此处http://www.thegeekstuff.com/2009/08/10-awesome-examples-for-viewing-huge-log-files-in-unix/ 以获取示例,或者只是谷歌搜索示例。
【讨论】:
如果您想运行一个程序来定期读取您的日志文件,那么您可以使用诸如 Quartz Scheduler 之类的调度程序来定期运行它。
【讨论】:
RandomAccessFile 是一个不错的选择。如果您离开应用程序,您必须在离开前保留上次阅读的位置,以避免重新阅读信息。
另一方面,对于繁重的事件流,日志文件往往会变得相当大。轮换日志文件将允许您将问题稍微转向文件命名。您可以将系统配置为每天生成一个日志文件,如下所示:
app_access.2011-11-28.log,
app_access.2011-11-29.log,
app_access.2011-11-30.log,
...
如果您获得的文件仍然很大,您可以按日期和时间轮换它们,并且您还可以将小时作为文件名的一部分。然后,您的文件可以轮换一次,比方说,每三个小时甚至每小时一次。这将为您提供更多可供阅读的日志文件,但它们会更小,因此更易于处理。您要查找的日期和时间范围将是文件名的一部分。
您还可以另外按文件大小旋转。如果您选择最大文件大小,您可以处理您可以完全避免随机访问一个巨大的文件。
【讨论】: