如何重新定义stderr和stdout以使用日志记录模块单独记录文件?例如stderr.log和stdout.log文件?
答案 0 :(得分:8)
您只需将sys.stdout
和sys.stderr
替换为自定义文件类对象:
import sys
sys.stdout = open('stdout.log', 'a')
sys.stderr = open('stderr.log', 'a')
撤消:
sys.stdout = sys.__stdout__
sys.stderr = sys.__stderr__
有关详情,请参阅sys
module documentation。
答案 1 :(得分:1)
import sys
class OutDevice():
def write(self, s):
# do whatever
pass
class ErrDevice():
def write(self, s):
# do whatever
pass
sys.stdout = OutDevice()
sys.stdout = ErrDevice()
# to restore
sys.stdout = sys.__stdout__
sys.stderr = sys.__stderr__