我有几个线程,每个线程都将输出写入标准输出。但是,我想将每个线程的输出重定向到彼此独立的单独文件。
我的意思是:
- Thread1 将每个打印、每个异常和所有其他输出写入 file1.log
- Thread2 将每个打印、每个异常和所有其他输出写入 file2.log
- 等等。
所以我正在寻找的是专门为每个线程设置标准输出。然而,设置标准输出仅在全局范围内有效,这意味着 Thread1 和 Tread2 将始终写入相同的定义标准输出。我还没有发现如何做到这一点。python 日志记录不适合这个,因为我已经检查过了。
我怎样才能做到这一点?
编辑:根据 dbra 的回答,我编写了以下演示日志记录的小程序:
#!/usr/bin/python
# -*- coding: utf-8 -*-
from multiprocessing import Process
import sys
class SubRunner(object):
def print_something( self, name ):
print name + ": print something"
class MainRunner(object):
def __init__(self, name):
self.sub_runner = SubRunner()
self.name = name
def runme(self,dummy):
sys.stdout = open('example_' + self.name + ".log", "w")
self.sub_runner.print_something( self.name )
#Main program
m1 = MainRunner("M1")
m2 = MainRunner("M2")
p1 = Process(target=m1.runme, args=('',) )
p2 = Process(target=m2.runme, args=('',) )
p1.start()
p2.start()
p1.join()
p2.join()