[S016]: Python print() 信息输出到控制台,同时保存到 txt/log 文件
以往的项目开发中,通常都是将 print() 信息直接打印到控制台。
但随着项目容量增大,print 的信息越来越多,控制台有时难以完全显示,并且查找很不方便。
同时也想能够保存下来,以便后续能够调出复查。
我们可以在脚本中加入如下代码:
import sys, os, time
# log recorder
class Logger(object):
def __init__(self, stream=sys.stdout):
output_dir = "./75_logpool/" # folder
if not os.path.exists(output_dir):
os.makedirs(output_dir)
#log_name = '{}.txt'.format(time.strftime('%Y-%m-%d-%H-%M',time.localtime(time.time())))
log_name_time = time.strftime('%Y-%m-%d-%H-%M-%S',time.localtime(time.time()))
log_name = log_name_time + ".txt"
filename = os.path.join(output_dir, log_name)
self.terminal = stream
self.log = open(filename, 'a+')
def write(self, message):
self.terminal.write(message)
self.log.write(message)
def flush(self):
pass
主函数中,我们需要在最开始端加入如下代码:
sys.stdout = Logger(sys.stdout) # record log
sys.stderr = Logger(sys.stderr) # record error
比如说我们在主函数中加几个 print 函数:
# main function
if __name__=="__main__":
sys.stdout = Logger(sys.stdout) # 将输出记录到log
sys.stderr = Logger(sys.stderr) # 将错误信息记录到log
print("\n")