我想设置一个作为 tee 命令工作的记录器。本质上,我想设置一个记录器,将控制台输出记录到一个文件中,同时在控制台中显示它们。
我传递日志文件的路径
log_file_path
,它会将所有控制台输出记录到该文件,同时还会在控制台中显示控制台输出。请注意,我在我的代码中使用了 TQDM,因此它也应该处理它们的输出。我希望在日志文件中看到 TQDM 的准确输出。另外,如果可能的话,我不希望日志文件有几行用于相同的 TQDM 迭代。
我已经有了这个:
import sys
class TeeLogger(object):
def __init__(self, *files):
self.files = files
def write(self, obj):
for file in self.files:
file.write(obj)
file.flush()
def flush(self):
for file in self.files:
file.flush()
def setup_logger(log_file_path):
log_file = open(log_file_path, 'w')
sys.stdout = TeeLogger(sys.stdout, log_file)
但是 tqdm 输出没有出现在日志文件中。我也尝试过重定向 sys.sterr,但这总是会破坏控制台中的 tqdm 输出。我希望 tqdm 输出保持正常。