使用的另一个堆栈溢出问题,我写我自己写进程类的建议:重定向蟒蛇输出到文件打印两行
class LogWriter:
def __init__(self, output, filename):
self.output = output
self.logfile = file(filename, 'a')
def write(self, text):
now = datetime.now()
stamp = now.strftime("%Y-%m-%d - %I:%M:%S")
text = "[%s] %s" % (stamp,text)
if(DEBUG):
self.output.write(text)
self.output.flush()
self.logfile.write(text)
self.logfile.flush()
def close(self):
self.output.close()
self.logfile.close()
然而,这是输出我收到:
>>logwriter = LogWriter(sys.stdout, LOG_FILENAME)
>>sys.stdout = logwriter
>>print "test"
[2011-12-12 - 08:15:00] test[2011-12-12 - 08:15:00]
如果我删除修改文本并只打印原始邮件的行,该类按预期工作,打印到日志文件和stdout:
test
出于某种原因,我的时间戳是重复的,我找不到原因。在python中修复这个错误的正确方法是什么?
编辑:正如下面aix所说,我假定打印电话和写电话是一对一的,但事实并非如此。举一个简单的修复继续使用我的日志写I类现在正在做的电话如下:
...
def write(self, text):
now = datetime.now()
stamp = now.strftime("%Y-%m-%d - %I:%M:%S")
text = "[%s] %s\n" % (stamp,text)
...
>>logwriter = LogWriter(sys.stdout, LOG_FILENAME)
>>logwriter.write("test")
[2011-12-12 - 08:38:55] test
我真的会推荐http://docs.python.org/library/logging.html – Jdog
这对于我需要做的事情来说是过分的,我只会做4-5个日志调用,但我认为这是一个pythonic方式做伐木,原来我错了! –