2011-11-30 72 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, 
... 

如果你得到的文件仍是非常大的,你可以按日期和時間旋轉他們,你也將有每小時的一部分文件名。然後你的文件可以旋轉,比方說,每三個小時甚至每一個小時。這會給你更多的日誌文件來讀取,但它們會更小,因此更容易處理。您要查找的日期和時間範圍將成爲文件名的一部分。

您還可以通過文件大小額外旋轉。如果您選擇可以處理的最大文件大小,則可以避免完全隨機訪問大型文件。