sys.stdout をログ ファイルに複製する
Python では、sys.stdout をログ ファイルに複製することで、非侵襲的なソリューションを提供できますアプリケーションのコードを変更せずにログを記録します。これを実現する方法は次のとおりです。
対話モードで、出力を画面に表示し、ログ ファイルに書き込む場合は、デーモン モードで使用したロジックを元に戻すことができます。 stdout と stderr をリダイレクトする代わりに、os.dup2 を使用してそれらを複製します。
以下のコードはこれを示しています。
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())
このアプローチにより、システム コールからの出力を含むすべての出力をログに記録できます。コードを変更せずに。
あるいは、提供されている Tee クラスを利用することもできます。スニペット:
# Initialize a Tee object, redirecting stdout to a log file tee = Tee("a.log", 'w')
このクラスは、すべての出力がログ ファイルと標準出力の両方に書き込まれることを保証し、アプリケーションのコードを変更せずに対話モードでログインするための便利なソリューションとなります。
以上がコードを変更せずに Python の sys.stdout をログ ファイルに複製するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。