为什么time.sleep()会破坏Python中的syslog-ng

时间:2012-01-27 07:29:33

标签: python logging sleep syslog

我一直在尝试使用syslog-ng记录脚本输出,但是,如果我在代码中使用任何time.sleep()函数,它会中断syslog-ng并停止记录脚本的输出。

以下是详细信息。

// samplescript.py
import time

while True:
    print "hello world"
    time.sleep(5)

我使用pipe将其输出到syslog-ng,我使用unix logger工具,所以我这样调用脚本;

$ python sampleoutput.py | logger

这不会为我的日志文件生成任何输出。代码很简单,也很有效。

顺便说一下, 我对syslog-ng conf文件没有任何问题,因为如果我使用下面的代码,它会按预期工作。

// samplescript.py    
while True:
    print "hello world"

问:为什么time.sleep()会破坏syslog-ng?我可能在我的代码中使用sleep()函数是否有任何等价性?

提前感谢。

1 个答案:

答案 0 :(得分:4)

您需要刷新缓冲的stdout-stream:

import sys
sys.stdout.flush()

How to flush output of Python print?