2013-07-07 29 views
0

我設計我的tool.I記錄器插件對目標板上busybox的系統日誌,我想從它的系統日誌數據,所以我可以通過我自己的(不通過syslog的遠程端口轉發)轉發到我的主機通信framework.Initially我已經利用了系統日誌的轉發接收到一個命名管道消息的能力,而是通過一個補丁除了這僅適用於這是不是在我的case.So可行的,現在我的想法是寫在日誌配置文件轉發所有日誌消息,它收到一個文件並跟蹤文件以獲取我的數據。我可以使用tail函數來監視我的文件更改,但我的busybox尾部不支持「 - follow」選項,因爲syslog執行logrotate會導致「tail -f 「失敗了。而且我也不確定這是否是一種很好的方法。因此,我想問的是,還有另一種方法可以從文件中獲取修改的數據。我可以使用inotify,但只能使用inotify用於跟蹤文件更改。所以有辦法d這個?如何從Linux中的文件獲取修改的數據?

回答

0

你可以嘗試在 「diff」 實用程序(或GIT-diff,從而有更多的設施)。

+0

我不能使用的diff工具,因爲它是用來比較文件,但對我來說,我需要從日誌文件中獲取新添加的數據像如記憶:一個命名管道,所以我從這個存儲器中檢索數據併發送它在我的主機 –

0

你可以寫一個腳本/程序,它可以接收inotify的事件。然後腳本重新打開文件,並從之前保存的上次讀取文件位置開始讀取,直到EOF。

+0

但系統日誌logrotates它的文件,所以這可能是工作,直到我的文件在logrotated這種情況下,我的文件的最後讀取的位置將變得無效,也inotify的會阻止一個事件,我不能使用阻塞調用,因爲我的記錄器程序的一部分阻止呼叫的通信框架不可行。 –

+0

對於日誌旋轉,我猜最大尺寸已經被指定。您可以根據此最大查找修改您的查找位置。而inotify可以給你最新變化的開始和結束。 – vinayak

+0

好的,謝謝我會嘗試這種方法。 –

相關問題