2011-04-06 60 views
1

當我的Python腳本是以線使用內置的日誌庫的Python寫了大量的原木到一個文本文件中的行,在我的德爾福動力Windows程序我想有效地讀取所有新添加的日誌(行)。有效讀取大,活躍的Python的日誌文件

  1. 當Python腳本被記錄 到文件,我的Windows程序將 保持只讀文件句柄 該日誌文件;

  2. 我將使用Windows API來獲取 通知時,該日誌文件是 改變;一旦文件被改變,它會讀取新添加的行。

我是新來的Python,你看到這種方法的任何可能的問題? Python日誌記錄庫是否鎖定整個日誌?謝謝!

回答

0

As ɹsәɹoɈ評論說,標準的FileHandler記錄器不鎖定文件,所以它應該工作。但是,如果由於某種原因,你不能讓你鎖定文件 - 那麼我建議讓你的其他應用程序定期打開文件,記錄它讀取的位置,然後再回到那個位置。我知道與它監視的很長一段時間的日誌文件處理當Linux 的DenyHosts程序使用此方法。在這些情況下,簡單地持有一個鎖是不可行的,因爲目錄可能會移動,文件會被旋出等等。雖然它確實使事情變得複雜,那麼您必須將文件名+讀取位置存儲在持久狀態中。

+0

由於在EXE程序中它必須實時顯示新添加的日誌條目,恐怕關閉並重新打開日誌文件會導致性能瓶頸。 – 2011-04-07 02:45:12

1

這取決於您使用的日誌記錄處理程序,當然,但從source code可以看到,logging.FileHandler當前不會創建任何文件鎖定。默認情況下,它以'a'(追加)模式打開文件,所以只要你的Windows調用可以處理它,你應該沒問題。

+0

很高興知道,謝謝! – 2011-04-07 03:11:05