如何将stderr和stdout分别重定向到日志?

2 投票
2 回答
818 浏览
提问于 2025-04-17 12:16

如何使用日志模块将标准错误输出(stderr)和标准输出(stdout)分别重定向到不同的日志文件,比如stderr.log和stdout.log?

2 个回答

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__ 

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

8

你可以简单地用自定义的文件样式对象来替换 sys.stdoutsys.stderr

import sys

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

如果想要恢复原状,可以这样做:

sys.stdout = sys.__stdout__
sys.stderr = sys.__stderr__

想了解更多信息,可以查看 sys 模块的文档

撰写回答