【发布时间】:2014-03-26 00:25:38
【问题描述】:
我最近想要一些 python 代码,它可以让我输出到控制台和具有相同打印语句的日志文件。谷歌搜索后,我发现this 网站提供了一个很好的解决方案。但是,我希望能够在每次写入后刷新输出缓冲区,以便在日志文件中看到它。我将如何将它添加到这个类中?
我已尝试按照设置...
class output_file(object):
def __init__(self, stdout, filename):
silentremove(filename)
self.stdout = stdout
self.logfile = open(filename, "a")
def write(self, text):
self.stdout.write(text)
self.logfile.write(text)
sys.stdout.flush()
def flush(self):
sys.stdout.flush()
def close(self):
self.stdout.close()
self.logfile.close()
这是一个循环错误,导致刷新函数调用自身。
class output_file(object):
def __init__(self, stdout, filename):
silentremove(filename)
self.stdout = stdout
self.logfile = open(filename, "a")
def write(self, text):
self.stdout.write(text)
self.logfile.write(text)
self.stdout.flush()
def flush(self):
sys.stdout.flush()
def close(self):
self.stdout.close()
self.logfile.close()
这根本没有冲洗它。
【问题讨论】:
-
不回答问题,但您可能想查看日志记录模块。为了做你想做的事,你可以为同一个记录器定义两个处理程序(一个用于控制台,一个用于文件)
-
@RedBaron 这正是我最初想要的。如果您将其作为答案提交,我会接受。
-
从技术上讲,这不是您问题的答案,因此我不适合发布它。对于未来的访问者,您可以在问题的尾声中解释
logging如何帮助您克服最初的问题(导致了这个问题)
标签: python stdout flush logfile