如何将python日志输出重定向到文件而不是stdout?

时间:2016-07-13 12:36:15

标签: python logging io-redirection

我想重定向所有输出,甚至是从导入文件的外部模块。

sys.stdout = open('logfile', 'a')

不执行外部文件完成的日志记录工作在stdout上回显。

我修改了外部模块的源代码,它们与python的“日志记录”模块密切相关,并依赖它来输出。

另外,我不想使用>来使用流重定向。操作

2 个答案:

答案 0 :(得分:0)

试试这个:

sysstdout = sys.stdout
log_file = open("your_log_file.txt","w")
sys.stdout = log_file
print("this will be written to message.log")
sys.stdout = sysstdout
log_file.close()

或者,做正确的事并正确使用Python's logging module

答案 1 :(得分:0)

import sys

sys.stdout = sys.stderr = open('logfile', 'a')

print('this should be working from anywhere')
import logging
logging.warn('this too')

您看到外部模块打印到控制台的原因可能是他们使用stderr(这是logging模块的默认输出处理程序)。