因为工作的需要,控制台程序需要同时输出到屏幕并且记录到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)
控制台日志
最新推荐文章于 2024-09-18 15:00:02 发布
该博客介绍了如何修改一个logger类,使其能够在控制台实时输出的同时,将信息记录到日志文件中,适用于长时间运行的程序。通过创建一个Logger对象并替换sys.stdout和sys.stderr,实现了print语句同时在屏幕和日志文件中显示。示例代码展示了一个循环打印数字并延时的场景。
319

被折叠的 条评论
为什么被折叠?



