【发布时间】:2014-07-23 13:11:45
【问题描述】:
我想将不同类的实时标准输出记录到日志文件中。 这是我的演示代码。代码运行良好。但它正在等待示例函数完成。我想并行运行它。因此日志文件将在标准输出打印的同时写入。
import sys
import time
class Logger(object):
def __init__(self):
self.terminal = sys.stdout
self.log = open("log.txt", "a")
def write(self, message):
self.terminal.write(message)
self.log.write(message)
class sample:
def __init__(self):
print "TEST"
time.sleep(5)
if __name__ == "__main__":
a = sample()
sys.stdout = Logger()
【问题讨论】:
-
你试过了吗:
self.log.flush()?在write之后?请注意,sys.stdout缓冲可能会根据许多因素/选项而改变,因此您最好flush()也这样做。 -
@Bakuriu ..感谢它的工作。另外我必须在
a = sample()之前打电话给sys.stdout = Logger()
标签: python linux logging stdout