有效地读取大型活动的Python日志文件

时间:2011-04-06 18:13:14

标签: python windows logging text-files

当我的Python脚本使用Python内置日志库逐行将大量日志写入文本文件时,在我的Delphi驱动的Windows程序中,我想有效全部阅读新添加的日志(行)。

  1. 当Python脚本记录时 到该文件,我的Windows程序将 保持只读文件句柄 该日志文件;

  2. 我将使用Windows API来获取 日志文件时通知 改变;文件更改后,它将读取新添加的行。

  3. 我是Python新手,你觉得这种方法有什么问题吗? Python日志记录库是否锁定整个日志?谢谢!

2 个答案:

答案 0 :(得分:1)

当然,这取决于您使用的日志记录处理程序,但正如您在source code中看到的那样,logging.FileHandler当前不会创建任何文件锁。默认情况下,它以'a'(追加)模式打开文件,因此只要您的Windows调用可以处理,您应该没问题。

答案 1 :(得分:0)

ʇsәɹoɈ注释时,标准的FileHandler记录器不会锁定文件,因此它应该可以工作。但是,如果由于某种原因你不能让你锁定文件 - 那么我建议让你的另一个应用程序定期打开文件,记录它的读取位置,然后再回到那个点。我知道Linux DenyHosts 程序在处理它必须长时间监视的日志文件时使用这种方法。在这些情况下,简单地持有一个锁是不可行的,因为目录可能会移动,文件被旋转出来等等。虽然它确实使事情变得复杂,但你必须在某个地方存储文件名+读取位置。