Auf dem Gebiet der Umstandskrämerei muss ich regelmäßig und neidlos die Überlegenheit anderer Menschen anerkennen. Um die normale Ausgabe eines Python-Skripts in eine Datei umzuleiten, kann man so vorgehen:
# open our log file so = se = open("%s.log" % self.name, 'w', 0) # re-open stdout without buffering sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0) # redirect stdout and stderr to the log file opened above os.dup2(so.fileno(), sys.stdout.fileno()) os.dup2(se.fileno(), sys.stderr.fileno())
Es ist sicher richtig, dass os.fdopen
und os.dup2
auch mal was für ihr Geld tun sollen, aber man könnte es allen Beteiligten auch einfacher machen:
log_file = open("%s.log" % self.name, 'w', 0) sys.stdout = log_file sys.stderr = log_file
Oder noch einfacher. Ganz einfach? Offenbar nicht.