相关疑难解决方法(0)

从经常更新的文件中读取

我目前正在Linux系统上用python编写程序.目标是在找到特定字符串时读取日志文件并执行bash命令.日志文件由另一个程序不断写入.我的问题是:

如果我使用open()方法打开文件,我的Python文件对象会在实际文件被其他程序写入时更新,还是我必须按时间间隔重新打开文件?

谢谢

吉姆

更新:到目前为止,感谢您的答案.我或许应该提到该文件是由Java EE应用程序编写的,因此我无法控制何时将数据写入其中.我目前有一个程序每隔10秒重新打开一次该文件,并尝试从它上次读取的文件中的字节位置读取.目前它只打印出返回的字符串.我希望文件不需要重新打开,但是read命令可以以某种方式访问​​Java应用程序写入文件的数据.

#!/usr/bin/python
import time

fileBytePos = 0
while True:
    inFile = open('./server.log','r')
    inFile.seek(fileBytePos)
    data = inFile.read()
    print data
    fileBytePos = inFile.tell()
    print fileBytePos
    inFile.close()
    time.sleep(10)
Run Code Online (Sandbox Code Playgroud)

感谢pyinotify和发电机的提示.我打算看看这些更好的解决方案.

python file-io fopen

49
推荐指数
3
解决办法
5万
查看次数

创建一个连接Oracle的日志处理程序?

所以现在我需要创建并实现将用于登录数据库的Python日志记录模块的扩展.基本上我们有几个python应用程序(都在后台运行),当前记录到文本文件的随机混搭.这使得几乎不可能发现某个应用程序是否失败.

给我的问题是将所述日志记录移动到文本文件到oracle DB.这些表已经被定义,并且需要记录的东西,但是现在,我正在寻找添加另一个将记录到数据库的日志记录处理程序.

我使用的是python 2.5.4和cx_Oracle,一般应用程序可以作为服务/守护程序或直接应用程序进行以太运行.

我只是好奇地想知道最好的方法是什么.几个问题:

  1. 如果cx_Oracle发生任何错误,应将这些错误记录在哪里?如果它的下降最好只是让记录器退回到默认文本文件?

  2. 一段时间后,我们开始强制人们使用sys.stderr/stdout.write而不是print,所以最糟糕的情况是我们不会遇到任何关于print被弃用的问题.有没有办法无缝地将所有成千上万的sys.std调用直接传送到记录器中,并让记录器拾取松弛?

  3. 在每条记录的消息之后,脚本是否应自动执行提交?(每秒会有几十个.)

  4. 为日志记录系统实现新处理程序的最佳方法是什么?从基本的Handler类继承似乎是最简单的.

任何想法/建议都会很棒.

python oracle logging

14
推荐指数
1
解决办法
5882
查看次数

标签 统计

python ×2

file-io ×1

fopen ×1

logging ×1

oracle ×1