簡體   English   中英

perl File :: Tail同步

[英]perl File::Tail syncronization

我有這種情況:我用perl守護進程解析一些日志文件。 該守護進程將數據寫入mysql db。

日志文件可以:

  1. 旋轉('由文件大小和一些邏輯'解決)
  2. 不存在(Tail中的'ignore_nonexistant'參數)

守護程序:

  1. 可以被殺死
  2. 一些reazon可能會死。

我使用File :: Tail來尾隨文件。 對於創建日期或文件大小的文件輪換機制可以提供幫助。 我應該使用什么機制從文件中的某個位置開始尾部? (假設有很多這樣的守護進程,沒有對文件系統的寫訪問權限)。

我在DB中考慮位置變量,但這對我沒有幫助。

也許某種機制將位置參數傳遞給parrent進程?

我只是不想重新發明自行車。

File :: Tail已經檢測到旋轉並繼續從新文件中讀取。

要處理守護程序死亡和重新啟動,您是否可以在數據庫中查詢守護程序重新啟動時寫入的最后一條記錄,並且只是跳過日志文件行,直到您到達更晚的行?

試試http://search.cpan.org/dist/Log-Unrotate/ 如果您希望將位置文件存儲在DB而不是本地文件系統中,則必須實現自己的Log::Unrotate::Cursor類,但這應該是微不足道的。

我們在生產中編寫並使用了Log::Unrotate 5年,並且它很難從不跳過任何數據。 (如果你的光標變得無效,它會如此努力地拋出異常,例如,當讀取器由於某種原因而無法工作時,日志被多次旋轉。你可能想要啟用autofix_cursor選項來改變這種行為)。

另請查看http://search.cpan.org/dist/File-LogReader/ 我從來沒有使用它,但它應該解決同樣的任務。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM