我试图编写一个Python脚本来解析另一个守护进程生成的日志文件。这是在Linux上完成的。我希望能够可靠地解析日志文件。在
换句话说,我们定期运行一个脚本,逐行读取日志文件,并对每一行执行一些操作。日志记录脚本需要查看日志文件中可能结束的每一行。它可以通过cron每分钟运行一次。在
这是一个我不确定如何解决的问题。因为另一个进程对文件有一个写句柄,所以它可以在我从同一日志文件中读取的同一时间写入while。在
另外,我们经常希望清除这个日志文件,这样它的大小就不会失控。但是生成日志文件的进程除了定期停止、截断或删除文件,然后重新启动之外,没有办法清除该文件。(我觉得logrotate有一些方法可以做到这一点,但我不知道logrotate是否依赖于守护进程的感知,或者它是否真的关闭并重新启动守护进程等等。更不用说我不想让其他日志轮换,只需要这一个特定的日志;我不希望这个脚本要求其他可能的用户设置logrotate。)
问题是:
我无法控制记录器守护程序。(假设我们在这里讨论的是类似syslog的东西。这不是syslog而是相同的想法-一个非常关键的进程会打开一个日志文件。)所以我没有办法更改它的日志记录方法。它在初始化时启动,打开一个日志文件,然后写入其中。我们希望能够清除日志文件并对其进行分析,以确保在某个时刻通过Python脚本获取每个日志条目。在
理想的情况是:
我已经非常,非常模糊地研究了先进先出,但不确定这是否合适。在这种情况下,日志分析器将作为守护进程本身运行,而原始记录器将写入FIFO。我对这个领域知之甚少,也不知道这是否是一个解决方案。在
所以我想问题有两个:
logfile.readlines(); logfile.truncate
这样就不会丢失任何条目。但这看起来好像除非logger进程很清楚地意识到这一点,否则最终导致的问题会比解决的问题更多。)谢谢!在
我看不出有什么特别的原因使您不能读取syslogd创建的日志文件。您是说您正在使用一个类似于syslog的进程,并且该进程保持您的日志文件处于打开状态?既然您是在征求意见,我建议您使用syslog!http://pic.dhe.ibm.com/infocenter/tpfhelp/current/index.jsp?topic=%2Fcom.ibm.ztpf-ztpfdf.doc_put.cur%2Fgtpc1%2Fhsyslog.html
不管怎样,它是有效的-使用它。写入日志的一些简单方法是使用logger命令:
在python脚本中,您可以这样做:
^{pr2}$还要记住,您可以实际配置syslogd。http://pic.dhe.ibm.com/infocenter/tpfhelp/current/index.jsp?topic=%2Fcom.ibm.ztpf-ztpfdf.doc_put.cur%2Fgtpc1%2Fconstmt.html
另外,关于空日志的问题,sysclog没有清除日志。还有其他的工具,比如在debian上使用logrotate。在这种情况下,如果您的日志是空的,您可以检查logrotate创建的备份文件。在
既然您的问题似乎出在日志工具中,我的建议是使用syslog进行日志记录。以及其他旋转原木的工具。然后您可以轻松地解析日志。如果通过任何方式(我甚至不知道syslog是否可能)丢失了一些数据,请记住,无论如何,您将在下一次迭代中获得这些数据;)
另一个想法是复制你的日志文件并使用复制。。。在
相关问题 更多 >
编程相关推荐