Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich Pythons sys.stdout in eine Protokolldatei duplizieren, ohne meinen Code zu ändern?
Duplizieren von sys.stdout in eine Protokolldatei
In Python kann das Duplizieren von sys.stdout in eine Protokolldatei eine nicht-invasive Lösung darstellen für die Protokollierung ohne Änderung des Anwendungscodes. So erreichen Sie dies:
Wenn Sie im interaktiven Modus möchten, dass die Ausgabe sowohl auf dem Bildschirm angezeigt als auch in eine Protokolldatei geschrieben wird, können Sie die im Daemon-Modus verwendete Logik zurücksetzen. Anstatt stdout und stderr umzuleiten, duplizieren Sie sie mit os.dup2.
Der folgende Code zeigt dies:
import os, sys # Open the log file for writing without buffering so = se = open("a.log", 'w', 0) # Duplicate stdout and stderr to the log file os.dup2(sys.stdout.fileno(), so.fileno()) os.dup2(sys.stderr.fileno(), se.fileno())
Mit diesem Ansatz können Sie alle Ausgaben protokollieren, einschließlich der Ausgaben von Systemaufrufen. ohne den Code zu ändern.
Alternativ können Sie die Tee-Klasse aus den bereitgestellten nutzen Snippet:
# Initialize a Tee object, redirecting stdout to a log file tee = Tee("a.log", 'w')
Diese Klasse stellt sicher, dass alle Ausgaben sowohl in die Protokolldatei als auch in die Standardausgabe geschrieben werden, was sie zu einer praktischen Lösung für die Protokollierung im interaktiven Modus macht, ohne den Code der Anwendung zu ändern.
Das obige ist der detaillierte Inhalt vonWie kann ich Pythons sys.stdout in eine Protokolldatei duplizieren, ohne meinen Code zu ändern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!