将输出记录到文本文件中

时间:2018-03-12 11:34:13

标签: python

可以将终端上显示的日志输出重定向到文本文件吗? 我试过了

                z = open('/mnt/sdc1/Ryan/Marx/newfile.txt'.format(file), 'w')
                sys.stdout= sys.stderr = z
                print ('Running the Algoritm Now for case {}'.format(file))
                run_liver_mpct_algorithms(data_paths, model_paths,[0], int(data_paths['batch_size']), data_paths['task_str']))
                z.close()

在文件中z这只给出了错误和打印语句的回溯,在run_liver_mpct_algorithms内部有许多日志输出,我也想在文件中输入。

任何想法都会有所帮助,谢谢!

1 个答案:

答案 0 :(得分:2)

为什么不使用标准库中的日志记录模块?这是一个简单的例子:

import logging
log_file = 'my_log_file.log'
log_fh = logging.FileHandler(log_file)
log_sh = logging.StreamHandler(sys.stdout)
log_format = '%(asctime)s %(levelname)s: %(message)s'
# Possible levels: DEBUG, INFO, WARNING, ERROR, CRITICAL    
log_level = 'INFO' 
logging.basicConfig(format=log_format, level=log_level, 
    handlers=[log_sh, log_fh])

您可以创建如下记录消息:

logging.info('This is a log message on level INFO')
logging.warning('This is a log message on level WARNING')

消息将被写入控制台和您指定的文件。