2012-05-03 3 views
1

私はweb.pyアプリケーションを開発し、スタンドアロンモード(コマンドラインからmyapp.pyを実行)で多くテストしました。標準出力はデバッグに非常に役立ちました。今はApache/mod_wsgiの下で実行しています。多くのことはうまくいきません。たとえば、私が働いていた私の基本認証スキームは、与えられたユーザー名とパスワードを常に拒否します。私が必要とする最初のことは、以前持っていたデバッグメッセージを見ることができるようにすることです。しかし、スクリプトの出力はどこにも見つかりません。Apache/mod_wsgiで実行しているときにweb.pyのstdoutログを取り戻すにはどうすればよいですか?

「デバッグプリント」を再度使用するにはどうすればよいですか?

私はそれが整理されるまで私のアプリの特定の問題について質問したくありません。

+0

mod_wsgiのどのバージョンを使用していますか? mod_wsgi 3.0+を使用していることを確認し、 'print'の出力がApacheエラーログに出力されるようにしてください。 –

答えて

1
>>> class STDOUT(object): 
    def __init__(self, next): 
     self.next = next 
     self.file = open('stdout.txt', 'w') 
    def write(self, thing): 
     self.file.write(thing) 
     l.append(thing) 
     self.next.write(thing) 

>>> import sys 
>>> s = STDOUT(sys.stdout) 
>>> sys.stdout = s 
>>> l = [] 
>>> print 4 
4 
>>> l 
['4', '\n'] 
+0

web.pyの内部では動作しません。私はあなたのコードの圧縮されたバージョンを使用して "前の" stdoutに書き込まず、内部配列に追加しません。ファイルには何も入っていません。 – JCCyC

+0

これがうまくいかない理由を私は理解できません。それは私のために何年も働いていました。たぶんImportErrorが発生するのでしょうか? try:except:モジュール全体を除いてどこかのファイルに書きましたか? traceback.print_exc(file = ...)を使用してエラーを出力することができます。 – User

関連する問題