相关文章推荐

[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")
 
推荐文章