使用的另一個堆棧溢出問題,我寫我自己寫進程類的建議:重定向蟒蛇輸出到文件打印兩行
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方式做伐木,原來我錯了! –