因为工作的需要,控制台程序需要同时输出到屏幕并且记录到log文件,
网上找到一个logger类, 但是当控制台是一个长时间运行的程序的时候,
无法实现上述功能, 只适合一定时间内就运行结束的程序. 我将这个类
改编了一下, 完美解决不能随时写入和读取log的问题, 代码如下:
import sys
import os
import time
class Logger(object):
logfile =""
def __init__(self, filename=""):
self.logfile = filename
self.terminal = sys.stdout
# self.log = open(filename, "a")
return
def write(self, message):
self.terminal.write(message)
if self.logfile != "":
try:
self.log = open(self.logfile, "a")
self.log.write(message)
self.log.close()
except:
pass
def flush(self):
pass
# path = os.path.abspath(os.path.dirname(__file__))
# type = sys.getfilesystemencoding()
sys.stdout = Logger("temp.log")
sys.stderr = Logger("temp.log")
if __name__ == '__main__':
for i in range(100000):
print(i)
time.sleep(0.1)
控制台日志
最新推荐文章于 2023-04-13 18:21:48 发布