Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Menduakan sys.stdout Python kepada Fail Log Tanpa Mengubah Suai Kod Saya?

Bagaimanakah Saya Boleh Menduakan sys.stdout Python kepada Fail Log Tanpa Mengubah Suai Kod Saya?

Linda Hamilton
Linda Hamiltonasal
2024-12-03 10:04:09171semak imbas

How Can I Duplicate Python's sys.stdout to a Log File Without Modifying My Code?

Mendua sys.stdout ke Fail Log

Dalam Python, menduplikasi sys.stdout ke fail log boleh menyediakan penyelesaian bukan invasif untuk pengelogan tanpa mengubah suai kod aplikasi. Begini cara untuk mencapainya:

Dalam mod interaktif, apabila anda mahu output kedua-duanya dipaparkan pada skrin dan ditulis pada fail log, anda boleh mengembalikan logik yang digunakan dalam mod daemon. Daripada mengubah hala stdout dan stderr, salinkannya menggunakan os.dup2.

Kod di bawah menunjukkan perkara ini:

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())

Pendekatan ini membolehkan anda melog semua output, termasuk output daripada panggilan sistem, tanpa menukar kod.

Sebagai alternatif, anda boleh memanfaatkan kelas Tee daripada yang disediakan coretan:

# Initialize a Tee object, redirecting stdout to a log file
tee = Tee("a.log", 'w')

Kelas ini memastikan bahawa semua output ditulis pada fail log dan output standard, menjadikannya penyelesaian yang mudah untuk log masuk dalam mod interaktif tanpa mengubah suai kod aplikasi.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menduakan sys.stdout Python kepada Fail Log Tanpa Mengubah Suai Kod Saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn